Estou com dificuldade com metodos em poo

7 respostas
poo
ariadny

questao: - Crie uma classe para representar uma pessoa, com os atributos privados de nome, data de nascimento e altura. Crie os métodos públicos necessários para sets e gets e também um método para imprimir todos dados de uma pessoa. Crie um método para calcular a idade da pessoa. (minha variavel idadep esta dando 0, o resto ta dando certo, eu acho.);

public class PessoaQ1{

private String nome;

private String nas;

private float altura;

private int idadep;
public float getAltura(){
	return this.altura;
}
public void setAltura(float a){
	this.altura = a;
}	
public String getNome(){
	return this.nome;

}
public void setNome(String n){
	this.nome = n;
}	
public String getNas(){
	return this.nas;
}
public void setNas(String n2){
	this.nas = n2;
}	
public void Calcular(){
	String aux = String.valueOf(nas.charAt(6)+""+nas.charAt(7)+""+nas.charAt(8)+""+nas.charAt(9));
	int anoNas= Integer.parseInt(aux);
	int idade = 2021 - anoNas;
	String aux2 = String.valueOf(nas.charAt(3)+""+nas.charAt(4));
	int mes= Integer.parseInt(aux2);
	if (mes>02){
		idade= idade -1;
	}else{
		String aux3 = String.valueOf(nas.charAt(0)+""+nas.charAt(1));
		int dia= Integer.parseInt(aux3);
		if(dia>17){
			idade= idade-1;
		}
		
	}
	this.idadep = idade;
}
public void status(){
	System.out.println("SOBRE A PESSOA:");
	System.out.println("Nome: "+this.getNome());
	System.out.println("Altura: "+this.getAltura());
	System.out.println("Data de nascimento: "+this.getNas());
	System.out.println("idade: "+this.idadep);
}

}

classe principal:

public class Atvd3Q1{

public static void main(String[]args){

PessoaQ1 p1 = new PessoaQ1();

p1.setNome(Maria);

p1.setAltura(1.57f);

p1.setNas(19/09/2003);

p1.status();

}

}

7 Respostas

wldomiciano

É porque vc precisa invocar o método Calcular() em algum momento.

Olhando seu código eu achei que faz sentido invocá-lo dentro do método setNas() , porque ele “setaria” o nascimento e automaticamente já calcularia a idade. Ficaria assim:

public void setNas(String n2) {
  this.nas = n2;
  Calcular();
}
staroski

Porque PessoaQ1,não é bem mais legível ser simplesmente Pessoa?
Porque idadep, não pode ser simplesmente idade?
Porque nas, não é mais legível escrever nascimento?
O método Calcular() deveria ser calcular().

No seu código, quem inicializa o atributo idadep é o método Calcular(), mas você não chamou ele em nenhum momento.

G
public float getAltura(){
	return this.altura;
}
public void setAltura(float a){
	this.altura = a;
}	
public String getNome(){
	return this.nome;

}
public void setNome(String n){
	this.nome = n;
}	
public String getNas(){
	return this.nas;
}
public void setNas(String n2){
	this.nas = n2;
}	
public int Calcular(){
	String aux = String.valueOf(nas.charAt(6)+""+nas.charAt(7)+""+nas.charAt(8)+""+nas.charAt(9));
	int anoNas= Integer.parseInt(aux);
	int idade = 2021 - anoNas;
	String aux2 = String.valueOf(nas.charAt(3)+""+nas.charAt(4));
	int mes= Integer.parseInt(aux2);
	if (mes>02){
		idade= idade -1;
	}else{
		String aux3 = String.valueOf(nas.charAt(0)+""+nas.charAt(1));
		int dia= Integer.parseInt(aux3);
		if(dia>17){
			idade= idade-1;
		}
		
	}
	this.idadep = idade;
    return idade;
}
public void status(){
	System.out.println("SOBRE A PESSOA:");
	System.out.println("Nome: "+this.getNome());
	System.out.println("Altura: "+this.getAltura());
	System.out.println("Data de nascimento: "+this.getNas());
	System.out.println("idade: "+this.Calcular());
}

Como já citado anteriormente, você não chamou seu método em nenhum momento. Eu recomendaria você trocar o tipo do seu método de void para int, assim toda vez que você chamar esse método ele já retornaria a idade calculada e ficaria assim sua saida:
System.out.println("idade: "+this.Calcular());

ariadny

é pq eu to fazendo uma lista de atividades então coloquei o Q1 na frente pra ficar mais facil quando eu for procurar a questão 1. obrigada pelas dicas

ariadny

humm vdd. obrigada

ariadny

entendi vou tentar aqui. muito obrigada

Fefo80

Conseguiu fazer os outros?

Criado 17 de fevereiro de 2021
Ultima resposta 18 de fev. de 2021
Respostas 7
Participantes 5