2013-04-03 58 views
0

我剛剛開始使用Java。我試圖做一個簡單的(幾乎是世界您好)程序:初學者:空指針異常

  1. 用戶輸入的三名球員
  2. 名稱的程序打印這三個名字
  3. 結束

玩家班級被稱爲「Jugador」。我收到一個NullPointerException錯誤。我或多或少理解這個概念,但我仍然不知道爲什麼它不工作=(任何幫助表示讚賞

來源:

Chicago2.java:

package chicago2; 
import javax.swing.JOptionPane; 
public class Chicago2 { 
    public static void main(String[] args) { 
     String s; 
     Jugador jugadores[]; 
     jugadores=new Jugador[3]; 
     int i=1; 
     System.out.println("Loading players:"); 
     for(Jugador x: jugadores) { 
      s=JOptionPane.showInputDialog("Name of player "+i+": "); 
      x = new Jugador(s); 
      System.out.println("Player "+i+": "+x.getName()); 
      i++; 
     } 

     System.out.println("Printing players name:"); 
     for(Jugador y : jugadores) { 
       System.out.println("Plays: "+y.getName()); 
     } 
    } 
} 

Jugador的.java:

package chicago2; 
public class Jugador { 
    private String name; 
    public Jugador(String nom) 
    { 
     name=nom; 
    } 
    public String getName() { 
     return name; 
    } 
} 

錯誤,我得到 (輸出):

運行:

加載玩家:

播放機1:一個

玩家2:乙

播放機3:C

印刷玩家的姓名:

異常線程「main」java.lang.NullPointerException

在chicago2.Chicago2.main(Chicago2.java:19)

Java結果:1

第19行是:

System.out.println("Plays: "+y.getName()); 

工作環境:

產品版本:NetBeans IDE 7.3(Build 201302132200)

Java:1.7.0_17; Java的熱點(TM)64位服務器VM 23.7-B01

運行:爪哇(TM)SE運行時環境1.7.0_17-B02

系統:Linux版本在AMD64 2.6.32-41泛型運行; UTF-8; EN_US(NB)

截圖:

enter image description here 如果你讀到這裏,謝謝大家。

回答

2

您從用戶處獲得的名稱未存儲在您的陣列中。你需要做的是這樣的: -

x = new Jugador(s); 
jugadores[i] = x; 

此外,int i=1;應該是int i=0;

但更好的可讀性,請參閱下面的代碼更改: -

System.out.println("Loading players:"); 
for(int i = 0; i < jugadores.length; i++) { // Better readability. 
     s=JOptionPane.showInputDialog("Name of player "+i+": "); 
     Jugador x = new Jugador(s); 
     jugadores[i] = x; // Added 
     System.out.println("Player "+i+": "+x.getName()); 
} 
+0

更好替換行x = new Jugador(s);靜止,改變爲'(Jugador X:jugadores)''到對(INT I = 0; I Mac

+0

@Mac - 建議採取! – SudoRahul

0

你是不是真的任何存儲在jugadores

爲了存儲,與x = jugadores[i-1] =new Jugador(s);