Duvida como finalizar o main

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