public static void main( String[] args) {
int a,i;
Scanner ler=new Scanner(System.in);
Cliente cli1[] = new Cliente[2];
cli1[0] = new Cliente();
System.out.println("------MENU------");
System.out.println(“1-CADASTRAR CLIENTE”);
System.out.println(“2-CONSULTAR SALDO”);
System.out.println(“3-REALIZAR DEPOSITO”);
System.out.println(“4-REALIZAR SAQUE”);
System.out.println(“5-REALIZAR TRANSFERÊNCIA”);
System.out.println(“6-SAIR”);
System.out.printf("INSIRA A OPÇÃO: ");
a = ler.nextInt();
switch(a){
case 1:
for(i=0;i<3;i++)
{ System.out.printf("Insira o nome: ");
cli1[i].nome = ler.next();
System.out.printf("Insira o endereço: ");
cli1[i].endereco = ler.next();
System.out.printf("Insira o telefone: ");
cli1[i].telefone = ler.next();
System.out.printf("Insira o CPF: ");
cli1[i].cpf = ler.next();
System.out.printf("Insira o ID: ");
cli1[i].id = ler.next();
}
}
/*int j;
for(j=0;j<3;j++)
{
System.out.printf("CLIENTES:"+cli1[j].nome);
}
*/
}
}
Erro: Código executa na primeio laço exibindo mensagem pra capturar nome, endereço etc… Mas ao iniciar a segunda contagem do laço quando digito o segundo nome do usuário dá esse erro… Exception in thread “main” java.lang.NullPointerException
O código comentado no final é pra após capturar eu ter certeza de que está sendo guardado então irei exibi-lo
Colocando Cliente[2] o seu array vai de 0 a 1, tendo duas posições, seu laço vai até i<3 ou seja, 0,1 e 2, muda o laço para i<2 ou muda o array para Cliente cli1[] = new Cliente[3];
Usa nextLine(); para String, nextInt(); pra números e por ai vai, ao invés de apenas next(); ou então usa sempre .nextLine(); e converte a String para o tipo desejado antes de atribuição. Mexer com Scanner é um saco…
Outra coisa, está invocando os atributos diretamente sem os setters?
@Edit, outra coisa, após a instrução do primeiro case, coloca um break;
Vc criou um array com capacidade para 2 clientes, mas instanciou apenas UM cliente na posição 0. Ou seja, ficou faltando instanciar o outro cliente. Pra ficar certo, teria que fazer assim:
Cliente cli1[] = new Cliente[2];
cli1[0] = new Cliente();
cli1[1] = new Cliente();
Não esqueça, se seu array possui 100 clientes, vc tem que instanciar TODOS os 100 antes de poder usá-los. Afinal, vc só criou um espaço (o array) para colocar clientes, agora precisa preencher estes espaços com clientes de verdade.
Cliente cli1[] = new Cliente[100];
cli1[0] = new Cliente();
cli1[1] = new Cliente();
cli1[2] = new Cliente();
cli1[3] = new Cliente();
/* ... */
cli1[98] = new Cliente();
cli1[99] = new Cliente();
Além das sugestões do @dms775 , sugiro as seguintes modificações em seu código:
Exclua a seguinte linha:
cli1[0] = new Cliente();
Modifique seu loop for pra ficar assim:
for (int i = 0; i < cli1.length; i++) {
cli1[i] = new Cliente(); // cria o cliente antes de usá-lo
/* ... */
}