Galera sou mais um iniciante na linguagem não consigo ver por que o codigo abaixo nao funciona:
public static void main(String[] args) {
Scanner Entrada = new Scanner(System.in);
cliente p[] = new cliente[2];
for (int i=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
Por dois motivos:
-
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:
-
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.
[code]public static void main(String[] args) {
Scanner Entrada = new Scanner(System.in);
cliente p[] = new cliente[2];
for (int i=0;i< p.length;i++){
cliente p = new cliente();
System.out.println("Digite o Id");
p[i].setId(Integer.parseInt(Entrada.nextLine()));
System.out.println("Qual o email?");
p.setEmail(Entrada.nextLine());
}
}[/code]
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).
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
public static void main(String[] args) {
Scanner Entrada = new Scanner(System.in);
for (int i=0;i<=3;i++){
cliente p = new cliente();
System.out.println("Digite o Id");
p.setId(Entrada.nextInt());
System.out.println("Qual o email?");
p.setEmail(Entrada.nextLine());
}
Testei aqui e funcionou.
Vc esta teclando enter depois que digita o Id?
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…
se usar next() no lugar de nextLine()?
furutani
Agora sim, funcionou! com p.setEmail(Entrada.next());
Ja vou pesquisar aqui pra entender a diferença. Valew Cara!
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().