Galera sou mais um iniciante na linguagem não consigo ver por que o codigo abaixo nao funciona:
publicstaticvoidmain(String[]args){ScannerEntrada=newScanner(System.in);clientep[]=newcliente[2];for(inti=0;i<=3;i++){//cliente p;//p = new cliente();System.out.println("Digite o Id");//var = Entrada.nextInt();p[i].setId(Entrada.nextInt());// System.out.println("Qual o email?");// p.setEmail(Entrada.nextLine());// i++;}System.out.println("ID->:"+p[i].getId());}}
Quando você criar o vetor assim:
cliente p[] = new cliente[2];
Você está apenas criando um espaço em memória para ele. Após isso você precisa iniciar o vetor com objetos:
Pode ser feito dentro do seu for
for (int i=0;i<=3;i++){
p[i] = new cliente();
System.out.println("Digite o Id");
p[i].setId(Entrada.nextInt());
}
Agora eu acho que funciona
ViniGodoy
Por dois motivos:
1. Você fez o vetor com 2 elementos, mas está fazendo o for do índice 0 até o 3, o que são 4 elementos.
Troque o <= por <.
Ou, melhor ainda, troque também o 3 pelo atributo length:
2. Você está tentando usar os clientes, sem tê-los criado. Criar um vetor não cria automaticamente os objetos dentro dele. O new era mesmo necessário.
Finalmente, respeite as convenções de código. Classes tem o nome começado com letra maiúscula (Cliente) e variáveis tem o nome começado por letra minúscula (entrada).
N
n0cturn0
Obrigado, estou começando a compreender, porém agora não consigo pegar os dados do cliente, não da opcao ele executa o System.out.pintln(“Qual o email”), mas não da opção para eu digitar.
Ficou assim
publicstaticvoidmain(String[]args){ScannerEntrada=newScanner(System.in);for(inti=0;i<=3;i++){clientep=newcliente();System.out.println("Digite o Id");p.setId(Entrada.nextInt());System.out.println("Qual o email?");p.setEmail(Entrada.nextLine());}
furutani
Testei aqui e funcionou.
Vc esta teclando enter depois que digita o Id?
N
n0cturn0
Sim…digito o id, Enter, ele mostra a mensagem do email, ja seguido da mensagem pra digitar o id novamente…não deixa digitar o email…
furutani
Agora sim, funcionou! com p.setEmail(Entrada.next());
Ja vou pesquisar aqui pra entender a diferença. Valew Cara!
ViniGodoy
Você usou apenas com nextLine() que nem eu fiz ali em cima? O único método que deveria ser usado com Scanner para ler do console é o nextLine().
O seu problema me parece ser pq vc usava o nextInt().