Solucionado (ver solução)
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++;