Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Arrray como resolver com while

int indice = 10;
        Agenda agenda = new Agenda();
        agenda.cliente = new Cliente[indice];
        int contador = 0;


        while (contador <= indice.length) {

            agenda.cliente[indice].nome = JOptionPane.showInputDialog("Digite o nome");
            utils.pularLinha();
            agenda.cliente[indice].endereco = JOptionPane.showInputDialog("Digite o endereço");
            utils.pularLinha();
            agenda.cliente[indice].telefone = JOptionPane.showInputDialog("Digite o numero telefonico:");
            utils.pularLinha();
           contador++;
        }

Eu to querendo fazer comparação do tamanho do array como o contador para não ultrapassar e não dar erro. . Esta dando a mensagem : The primivate type int, of indice does not have a field length. O tipo primivate int, de indice não tem um comprimento de campo

11 respostas

Talvez seja while (contador <= indice.length) com sinal de menor e adicionar o incremento ao contador (++).

Oi Max, logo de cara faltou colocar o incremento do contatador.

Dentro do loop coloca um

contador++;

O que você pode fazer para usar em arrays é usar o for para "ser obrigado" a colocar o incremento sempre.

Coloquei o contador e o length ,as está dando a mensangem: . The primivate type int, of indice does not have a field length. O tipo primivate int, de indice não tem um comprimento de campo . .

agenda.cliente[contador].nome = JOptionPane.showInputDialog("Digite o nome");
            utils.pularLinha();
            agenda.cliente[contador].endereco = JOptionPane.showInputDialog("Digite o endereço");
            utils.pularLinha();
            agenda.cliente[contador].telefone = JOptionPane.showInputDialog("Digite o numero telefonico:");
            utils.pularLinha();
            contador++;

deixa somente indice pois ele é o que está atribuindo o tamanho máximo do array.

Dentro do loop você substitui pelo valor que está sendo incrementado no caso contador, ficando, por exemplo?

agenda.cliente[contador].nome

mas você vai incrementar até indice - 1 pois o seu array tem 10 posições que vão de 0 à 9

solução!

se você quiser usar o length colocar agenda.cliente.length

int indice = 10;
        Agenda agenda = new Agenda();
        agenda.cliente = new Cliente[indice];
        int contador = 0;

        int tamanhoDoArray = indice;
        while (contador <= tamanhoDoArray) {

            agenda.cliente[contador].nome = JOptionPane.showInputDialog("Digite o nome");
            utils.pularLinha();
            agenda.cliente[contador].endereco = JOptionPane.showInputDialog("Digite o endereço");
            utils.pularLinha();
            agenda.cliente[contador].telefone = JOptionPane.showInputDialog("Digite o numero telefonico:");
            utils.pularLinha();
            contador++;

        }


        for(contador = 0; contador <= tamanhoDoArray; ++contador) {
            System.out.print("Nome: " +  agenda.cliente[contador].nome);
            utils.pularLinha();
            System.out.print("Endereco: " + agenda.cliente[contador].endereco);
            utils.pularLinha();
            System.out.print("Telefone: " + agenda.cliente[contador].telefone);
            utils.pularLinha();
            contador++;

Esta informando que estou acessando uma posição que não existe.

Oi Max, cai na informação que te passei, você criou um array de 10 posições, que vão de 0 à 9, portanto você tem que acessar até tamanhoDoArray - 1, por isso você faz isso enquanto ele for menor que o tamanhoDoArray.

O mesmo vale para o for

Você não precisa usar o for se já estiver usando o while, eu dei uma dica do que é melhor usar para o caso de loop, de qualquer forma o você está incrementando o contador dentro do for o que não é preciso, já que na estrutura dele você já coloca esse incremento.

int indice = 10;
        Agenda agenda = new Agenda();
        agenda.cliente = new Cliente[indice];
        int contador = 0;

        int tamanhoDoArray = indice;
        while (contador <= tamanhoDoArray-1) {

            agenda.cliente[contador].nome = JOptionPane.showInputDialog("Digite o nome");
            utils.pularLinha();
            agenda.cliente[contador].endereco = JOptionPane.showInputDialog("Digite o endereço");
            utils.pularLinha();
            agenda.cliente[contador].telefone = JOptionPane.showInputDialog("Digite o numero telefonico:");
            utils.pularLinha();
            contador++;

        }


        for(contador = 0; contador <= tamanhoDoArray-1; ++contador) {
            System.out.print("Nome: " +  agenda.cliente[contador].nome);
            utils.pularLinha();
            System.out.print("Endereco: " + agenda.cliente[contador].endereco);
            utils.pularLinha();
            System.out.print("Telefone: " + agenda.cliente[contador].telefone);
            utils.pularLinha();

        }

Ainda esta dando a informação posição inexistente.

Não to conseguindo enchergar o erro.

Coloca a mensagem de erro aí

java.lang.NullPointerException Linha 29 que é a linha da primeira inserção .

while (contador <= agenda.cliente.length-1) {

            agenda.cliente[contador].nome = JOptionPane.showInputDialog("Digite o nome");
            utils.pularLinha();
            agenda.cliente[contador].endereco = JOptionPane.showInputDialog("Digite o endereço");
            utils.pularLinha();
            agenda.cliente[contador].telefone = JOptionPane.showInputDialog("Digite o numero telefonico:");
            utils.pularLinha();
            agenda.cliente[contador].cadastramento = JOptionPane.showInputDialog("Digite a data de cadastramento:");
            utils.pularLinha();
            contador++;