0
我正在爲我的類編寫一個帶有swing組件的小程序,我在將信息存儲在double數組中時遇到了問題。該程序完全按照我的需要工作,只有一個例外:我通過「public double [] noten」聲明一個數組;「在行動者的私人方法之外。但是該數組是在私有方法內啓動的。double array丟失其信息
[...]
public double summe, notenschnitt;
public int i, anzahlnoten, besteNote, schlechtesteNote;
public double [] noten;
private void jBÜbernehmen2ActionPerformed(java.awt.event.ActionEvent evt) {
if(!jTAnzahlNoten.getText().equals("") && Double.parseDouble(jTAnzahlNoten.getText())>=1
&& Double.parseDouble(jTAnzahlNoten.getText())<=5){
i++; //Counts clicks
DecimalFormat f = new DecimalFormat("#0.00");
summe = summe + Double.parseDouble(jTNote.getText()); //sum for calculating the mean
anzahlnoten = Integer.parseInt(jTAnzahlNoten.getText()); //amount of grades
noten = new double[anzahlnoten];
noten[i-1] = Double.parseDouble(jTNote.getText());
jLANoten.setText("Noten: ");
jLANoten.setVisible(true);
for(double ae: noten){
jLANoten.setText(jLANoten.getText()+" "+ae);
}
notenschnitt = summe/i;
jLBN.setVisible(true);
jLNN.setVisible(true);
jLSN.setVisible(true);
jLNA.setVisible(true);
jLNN.setText(f.format(notenschnitt));
jLNA.setText(Integer.toString(i));
jLNote.setText(i+". Note");
if(Integer.parseInt(jTNote.getText()) < besteNote){
//gets the best grade
besteNote=Integer.parseInt(jTNote.getText());
jLBN.setText(Integer.toString(besteNote));
}
if(Integer.parseInt(jTNote.getText()) > schlechtesteNote){
//gets the worst grade
schlechtesteNote=Integer.parseInt(jTNote.getText());
jLSN.setText(Integer.toString(schlechtesteNote));
}
if (i >= Integer.parseInt(jTAnzahlNoten.getText())) {
//if clicks = amount of grades -> stop
jBÜbernehmen2.setVisible(false);
jBNeueBerechnung.setVisible(true);
jTNote.setBackground(Color.LIGHT_GRAY);
jTNote.setFocusable(false);
}else{
jTNote.requestFocus();
jTNote.setText("");
}
}
}
[...]
這還不是全部的代碼,只是關鍵部分
後市展望:foreach循環應該給我已經進入了檔次。 例如:應輸入三個等級,並輸入1,2和3.最後,該行應顯示:「Noten:1.0,2.0,3.0」
但是,在第一次單擊時,它會顯示:「Noten: 1.0,0.0,0.0「。第二次點擊:「Noten:0.0,2.0,0.0」第三次點擊:「Noten:0.0,0.0,3.0」。
它只打印最近輸入的等級,但爲什麼?數組的變量被聲明爲public?!我只是不明白這一點...
解決辦法:不要再創建陣列。刪除頂部行。 1 + – 2014-10-05 18:29:42
如果我刪除上面的行我得到一個java.lang.NullPointerException: -/ – SklogW 2014-10-05 18:31:53
@ user4102425你不應該完全抹去它,你應該把它移到一個地方,它只會被調用一次。 – Eran 2014-10-05 18:32:54