Opa, Freqüento o fórum à bastante tempo, mas esta é meu primeiro post…
Não entendi mto bem o pq q da erro em tempo de execução do código abaixo ! é lançado um “java.lang.NullPointerException”
Produto mercado[] = new Produto[6];
String aux = new String();
for(Produto a : mercado){
aux = JOptionPane.showInputDialog("Digite o código do produto");
a.setCodigo(Integer.parseInt(aux));
aux = JOptionPane.showInputDialog("Digite a descrição do produto");
a.setDescricao(aux);
aux = JOptionPane.showInputDialog("Digite o valor");
a.setPreco(Double.parseDouble(aux));
}
Produto mercado[] = new Produto[6]; // isto cria um array com 6 posições, todas com valor "null"
String aux = new String(); // Pra que usar "new String()"? Não precisa (não é isto que provoca o "null pointer exception")
for(Produto a : mercado){ // se você não preencheu o array "mercado" com produtos, "a" vai ser null e vai dar o NullPointerException.
Esse seu professor aprendeu isso onde? Isso parece transplante de uma prática que você é obrigado a fazer em VB (“Dim Bla as New Ble”). Não é boa prática nem em Java, nem em C#, e mesmo em VB.NET não é boa prática.
Se você precisa inicializar uma variável string com um valor vazio, use “” ou null, não “new String()”.
Sim senhor, e também estou querendo dizer que você come todos os erres. É que “for each” é uma visão “read-only” de um conjunto, ou seja, ele não é feito para preencher um array, e sim para percorrê-lo.