O exercicio pede isso:
Na classe principal do projeto, dentro do método main, você deve implementar um código que leia os dados de 10 pessoas (nome e idade), criando 10 objetos. Além disso, você precisa armazenar esses objetos dentro de um vetor.
Como saída o programa deve exibir:
- os dados de cada pessoa: nome e idade;
- quem é a pessoa mais velha e seu nome;
- quem é a pessoa mais nova e seu nome.
Esses dados devem ser adquiridos via teclado. Para tal, será necessário utilizar a classe Entrada.java.
Criei uma classe entrada para salvar as informações;
Criei a classe Pessoa;
package pessoasidades;
public class Pessoa {
private String nome;
private int idade;
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return this.nome;
}
public void setIdade(int idade){
this.idade = idade;
}
public int getIdade(){
return this.idade;
}
}
E minha duvida ta na classe main, como posso proceder para fazer o codigo Ler:
- os dados de cada pessoa: nome e idade;
- quem é a pessoa mais velha e seu nome;
- quem é a pessoa mais nova e seu nome
Minha classe main esta assim:
package pessoasidades;
public class Main {
private static Pessoa[] pessoas = new Pessoa[10];
public static void main(String[] args) {
for(int a = 0; a < pessoas.length; a++){
Pessoa pessoa = new Pessoa();
pessoa.setNome(Entrada.leiaString("Digite seu nome: "));
pessoa.setIdade(Entrada.leiaInt("Digite sua idade: "));
}
for (Pessoa pessoa: pessoas){
System.out.println(pessoa.getNome()
+ " - "
+ pessoa.getIdade());
}
}
Voce pode armazenar em 2 arrays distintos…um p nome e outro p idade.
E usar o método sort que ordena em ordem crescente, e ler o conteudo do
indice i no array idade e seu equivalente no outro array.
Mas nesse caso o primeiro array vai ser ordenado em ordem alfabética e o segundo que contém a idade vai ser ordenado em ordem numérica, assim os indice não vão corresponder!
O que você pode fazer é implementar a interfaces Comparator,
que vai especificar como deve ser feita a comparação, e usar ela como parâmetros no método Sort como o SilvioRush disse!
Exceto se o seu professor quer que você implemente um metodo que determina isso e não use nada pronto!
Pra que se ele já tem um array de pessoas e cada pessoa possui um nome e uma idade?
Você criou as instâncias de Pessoa
mas esqueceu de adicioná-las no seu array.
Eu refatorei sua classe pro código ficar mais legível, pois é péssimo implementar tudo dentro de um único método:
package pessoasidades;
public class Main {
public static void main(String[] args) {
Main programa = new Main();
programa.executar();
}
public void executar() {
Pessoa[] pessoas = cadastrar(10);
exibirDadosDeCadaPessoa(pessoas);
exibirPessoaMaisVelha(pessoas);
exibirPessoaMaisNova(pessoas);
}
private Pessoa[] cadastrar(int quantidade) {
Pessoa[] pessoas = new Pessoa[quantidade];
for (int i = 0; i < quantidade; i++) {
Pessoa pessoa = new Pessoa();
pessoa.setNome(Entrada.leiaString("Digite seu nome: "));
pessoa.setIdade(Entrada.leiaInt("Digite sua idade: "));
pessoas[i] = pessoa;
}
return pessoas;
}
private void exibirDadosDeCadaPessoa(Pessoa[] pessoas) {
System.out.println("Dados de cada pessoa:");
for (Pessoa pessoa : pessoas) {
System.out.println(" " + pessoa.getNome() + " - " + pessoa.getIdade());
}
}
private void exibirPessoaMaisNova(Pessoa[] pessoas) {
Pessoa maisNova = pessoas[0];
for (int i = 1; i < pessoas.length; i++) {
if (pessoas[i].getIdade() < maisNova.getIdade()) {
maisNova = pessoas[i];
}
}
System.out.println("Pessoa mais nova:");
System.out.println(" " + maisNova.getNome() + " - " + maisNova.getIdade());
}
private void exibirPessoaMaisVelha(Pessoa[] pessoas) {
Pessoa maisVelha = pessoas[0];
for (int i = 1; i < pessoas.length; i++) {
if (pessoas[i].getIdade() > maisVelha.getIdade()) {
maisVelha = pessoas[i];
}
}
System.out.println("Pessoa mais velha:");
System.out.println(" " + maisVelha.getNome() + " - " + maisVelha.getIdade());
}
}
1 curtida