[RESOLVIDO] Retorna nome errado

2 respostas
N

Boa noite.
Estou fazendo um programinha básico, e acho que vai ser rápido pra descobrir por que está retornando errado o NOME da pessoa com maior idade.

Tenho duas classes, o objetivo do programa é RETORNAR A MAIOR IDADE JUNTO DO NOME DA PESSOA E A MÉDIA DE IDADE.
A média está ok, a idade maior está ok, porém o NOME da pessoa de MAIOR idade retorna errado.

PODERIAM DAR UMA OLHADA ? OBRIGADO !

public class Pesquisa{
	
	private Pessoa vPessoa[] = new Pessoa[10];
	private int cont = 0;

	//Construtor
	
	Pesquisa(){
		insere();//método para inserir as instancias em um array/vetor
		maiorIdade();
		media();
	}
	
	public void insere(){
		vPessoa[0] = new Pessoa(20,"Maria");//instância/objeto da classe Pessoa
		vPessoa[1] = new Pessoa(23,"Cláudia");
		vPessoa[2] = new Pessoa(40,"Angélica");
		vPessoa[3] = new Pessoa(35,"Mônica");
		vPessoa[4] = new Pessoa(111,"Melissa");
		vPessoa[5] = new Pessoa(37,"Fernanda");
		vPessoa[6] = new Pessoa(19,"Ana");
		vPessoa[7] = new Pessoa(21,"Nathalia");
		vPessoa[8] = new Pessoa(9,"Luisa");
		vPessoa[9] = new Pessoa(28,"Lisandra");
		cont = 10;
	}
	
	public void maiorIdade(){
		int maior = vPessoa[0].getIdade();//começamos pela pos 0
		String nome = vPessoa[0].getNome();//começamos pela pos 0
		int posicao = 0;
		for(int i=0;i<cont;i++){				
			if(vPessoa[i].getIdade()>maior) //conforme o for
				maior = vPessoa[i].getIdade();
				nome = vPessoa[i].getNome();
				posicao = i;
			}
		System.out.println("Maior Idade: "+maior+" Nome: "+nome +" pos"+posicao);	
	
		}
	
	public void media(){
		int total=0;
		double media=0;
		for(int i=0;i<cont;i++)	{
			total = total + vPessoa[i].getIdade();//somatório do array
		}
		media = (double) total / cont; //somatório dividido pelo total de pessoas
		System.out.println("Média de Idades: "+media );
	}
	
	public static void main(String args[]){
		Pesquisa pesq = new Pesquisa();
	}
  }
public class Pessoa{
	private int idade;
	private String nome;
	
	public Pessoa(){
		idade = 0;
		nome = "";
	}

	public Pessoa(int id, String nome){
		idade = id;
		this.nome = nome;
	}
	public void setIdade(int id){
		idade = id;
	}

	public int getIdade(){
		return idade;
	}
	
	public void setNome(String nome){
		this.nome = nome;
	}

	public String getNome(){
		return nome;
	}
	

	public String toString(){
		return("Idade : " + idade + "\n" +
			   "Nome  : " + nome);
	}
}

2 Respostas

andeb

Você cometeu um pequeno engano, esqueceu de colocar as chaves do if…
Troque para algo do tipo abaixa que deverá funcionar…

if(vPessoa[i].getIdade()>maior) { //começo do if maior = vPessoa[i].getIdade(); nome = vPessoa[i].getNome(); posicao = i; } // fim do if

N

RESOLVIDO, FALTA DE ATENÇÃO !

VALEU !!!

Criado 20 de fevereiro de 2010
Ultima resposta 21 de fev. de 2010
Respostas 2
Participantes 2