Mostrar todas as idades lidas e não as duas últimas

Eu tenho um código com um system.out.println dentro de um do while e ele vai perguntando a idade da pessoa. Isso se repete 5 vezes.

Se a idade for <21, eu coloco numa variável. Senão, se for >51, coloco em outra variável. Isso também está dentro do laço.

No final mostro(era pra mostrar) todas as idades lidas. Acontece que por um erro meu de lógica, só as últimas duas idades são mostradas. Não sei como fazer. Me disseram que a maneira mais simples é usando arrays, mas ainda não entendo disso. Vcs confirmam? Não tem outro jeito?

Como armazenar 5 valores (quero dizer as idades) dentro de 2 variáveis somente? Impossível.

Para isto você deveria ter no mínimo 5 espaços na memória (ou 5 variáveis). =]

O caso do array (o mesmo que vetor) é que você pode criar uma variável que aloca vários espaços na memória. Assim, se você precisa de 5 espaços na memória, você deveria criar um array assim:

int [] idades = new int[5];

Daí você pode setar os valores para cada índice do array (lembramdo que em java índice de array começa com 0):

idades[0] = 18;
idades[1] = 21;
idades[2] = 72;

Entende? Daí você pode utilizar isto para armazenar não somente duas, mas todas as 5 idades que foram digitadas!

Espero ter ajudado. Até.

Tudo bem, ajudou, obrigado. Mas desse jeito, se fosse digamos, 100 idades? :shock:
Uma posição pra cada uma seria muito trabalhoso.

Você pode usar uma lista de inteiros:

[code] List lista = new ArrayList();
lista.add(17);
lista.add(42);
lista.add(99);

lista.add(13);
[/code]

ou algo mais dinamico:

while (alguma coisa) {
     lista.add(Scanner.nextInt());
}

[quote=Felipe Kan]Tudo bem, ajudou, obrigado. Mas desse jeito, se fosse digamos, 100 idades? :shock:
Uma posição pra cada uma seria muito trabalhoso.[/quote]

Não se você usar um for com um índice:

[code]int qtdIdades = 5; //Poderia ser 5, 10 ou 1000 =]

int[] idades = new int[qtdIdades];

for (int i = 0; i < qtdIdades; i++) {
idades[i] = leIdade();
}[/code]

Clareou um pouco mais agora?! =]