Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida com Arrays

Boa tarde,

Criei uma Classe chamada Teste só pra tentar imprimir o nome do dono de todas as contas.

Consigo percorrer o array perfeitamente, ele imprime o nome do dono, porém apresenta erro também.

Segue meu código:

public class Conta {
    String dono;


}

public class Teste {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

     Conta[]conta = new Conta[3];
     conta[0] = new Conta();
     conta[1] = new Conta();
     conta[2] = new Conta();

     conta[0].dono = "teste1";
     conta[1].dono = "teste2";
     conta[2].dono = "teste3";

     for (int i = 0; i <= conta.length; i++){
         System.out.println(conta[i].dono);
     }


    }

}

Outra dúvida: No caso eu só quis imprimir o atributo dono da classe conta, se eu quisesse imprimir todos os atributos, qual a melhor forma?

Agradeço desde já.

5 respostas

Ah, e isso é o que está aparecendo no console:

teste1 teste2 teste3 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at Teste.main(Teste.java:17)

Oi Guilherme,

Você esta tentando acessar uma posição que não existe, ao utilizar o <= tente apenas com < , o array é de 3 posições, porém começa do 0, então você deve acessar apenas a posição 0 1 2, nesse for com <= dá o erro pois você esta tentando 0 1 2 3, faz sentido?

 for (int i = 0; i < conta.length; i++){
         System.out.println(conta[i].dono);
}

Para imprimir outros, basta você atribuir para um outro atributo de Conta, e acessar a posição, direto do atributo, por exemplo:

 for (int i = 0; i < conta.length; i++){
     System.out.println("Dono: " + conta[i].dono);
     System.out.println("Saldo: " + conta[i].saldo);
}
solução!

Olá Guilherme! O erro que está acontecendo ao percorrer sua Array com o for() está sendo colocado um numero como index que não existe. Perceba que você pos i <= conta.length em seu for() logo enquanto a variável i for menor e igual a conta.length o for() continuará. No entanto, perceba que sua Array possui tamanho 3, mas o ultimo elemento possui index 2 pois o index começa com 0. Então quando você usa conta.length é retornado o valor 3 e seu for() continuará a execução do codigo enquanto a variável i for menor ou igual a 3. O erro ocorre quando a variável i assume o valor 3, pois como você usou o operador <= o código é executado, no entanto sua Array não possui index 3 por isso ocorre o erro.

O correto seria você por:

for (int i = 0; i < conta.length; i++){
         System.out.println(conta[i].dono);
}

Respondendo sua outra pergunta... Sim, existe uma forma de você imprimir varias informações de sua conta. Você pode criar um método mostraInformações() na sua classe conta, com todos as informações que você deseja imprimir e chama-lo em seu for(). Ficaria da seguinte forma:

public class Conta {
    String dono;
    int numero;
    double saldo;

    public void mostraInformacoes(){
        System.out.println("Dono da conta: " + this.dono);
        System.out.println("Número da conta: " + this.numero);
        System.out.println("Saldo da conta: " + this.saldo);
    }
}

public class Teste {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

     Conta[]conta = new Conta[3];
     conta[0] = new Conta();
     conta[1] = new Conta();
     conta[2] = new Conta();

     conta[0].dono = "teste1";
     conta[0].numero = 123;
     conta[0].saldo = 1000.0;

     conta[1].dono = "teste2";
     conta[1].numero = 456;
     conta[1].saldo = 2000.0;

     conta[2].dono = "teste3";
     conta[2].numero = 789;
     conta[2].saldo = 3000.0;

     for (int i = 0; i < conta.length; i++){
         conta[i].mostraInformacoes();
     }


    }

}

Ah show de bola então, muito obrigado pela ajuda Douglas e Romário.

Abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software