Boa noite pessoal.
Estou estudando e aprendendo Java de uma apostila que encontrei na net. Cheguei um dois exercícios, onde o primeiro eu consegui resolver, mas o segundo, eu não encontro solução para ele. Alguém pode me ajudar?
O exercício que consegui fazer tem esse enunciado: 2. Faça um programa que leia cinco nomes do teclado, e depois imprima esses nomes na ordem inversa em que foram digitado pelo usuário.
public void lerNomesEInverter() {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader bfr = new BufferedReader(isr);
int i;
String[] nome = new String[5];
try {
for (i = 0; i <= 4; i++) {
System.out.println("Digite um nome: ");
nome[i] = bfr.readLine();
System.out.println("nome [" + i + "]" + nome[i]);
}
} catch (Exception e) {
System.err.println("Erro ao gravar no Array");
}
System.err.println("escrevendo ao contrário os nomes recebidos:");
for (i = 4; i >= 0; i--) {
System.out.print(nome[i] + " ");
}
}
Se algo estiver errado no meu código acima, peço que me corrijam, por favor, eu acredito que é errando e persistindo no estudo que se aprende.
Já o seguinte exercício, tem como enunciado: 3. Altere o programa acima para que ele continue a ler nomes do teclado até que o usuário digite a palavra "fim", e então imprima os nomes digitados na ordem em que foram digitados.
Já tentei de várias maneiras, estou desde ontem durante o dia enroscado tentando fazer isso funcionar.
Muitas vezes dá o erro de Exception Bounds do Array, mostrando que estourou o limite do Array.
Quando eu consegui fazer funcionar sem dar erro exibiu todos os índices como NULL e só o último índice digitado foi mostrado no resultado. Segue código abaixo e também vou copiar o resultado de um teste que fiz.
public static void lerNomesAteFim() {
int num = 0;
String[] nome = null;
String resp;
do {
Scanner sc = new Scanner(System.in);
System.out.print("Digite o nome da posição " + num + ": ");
resp = sc.nextLine();
if (!resp.equals("fim")) {
nome = new String[num+1];
nome[num] = resp;
num++;
}
} while (!resp.equals("fim"));
for (int i = 0; i<=nome.length-1; i++) {
System.out.println("posição: "+i+" = "+nome[i]);
}
}
resultado da execução do código acima, inserindo três nomes. Alberto, Bruno e Carlos
run: Digite o nome da posição 0: Alberto Digite o nome da posição 1: Bruno Digite o nome da posição 2: Carlos Digite o nome da posição 3: fim posição: 0 = null posição: 1 = null posição: 2 = Carlos CONSTRUÍDO COM SUCESSO (tempo total: 8 segundos)
Como fazer para corrigir isso? Obrigado desde já pela ajuda.