1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Iniciante em programação e em Java, dúvida para resolver um exercício com vetor.

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.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags arrays java ou faça a sua própria pergunta.