2013-05-12 73 views
0

我需要一些幫助。我試圖讓用戶創建基礎架構,如果用戶從已經存在的基礎架構列表中提供正確的名稱並使用裏面的值。但後來我得到了這個錯誤:線程「主」的異常java.lang.NullPointerException TownObject是內部基礎設施的抽象類。 什麼可能會導致運行時錯誤?提前致謝。二維陣列上的例外

townObject commtowers = new infrastructure("telekom", "communication towers", 50); 
townObject busstop = new infrastructure("litatrek", "bus stop", 30); 

    townObject[][] ton = new townObject[20][20]; 

    String iname; 

    System.out.println("Enter infrastructure name : ");    
    iname = sc.nextLine(); 
    sc.nextLine(); 

    for (int i=0; i < rows; i++){ 
     for (int j=0; j < columns; j++){ 
     ****if (iname.equalsIgnoreCase(ton[i][j].getName()) 
      { 
       ton[x][y] = new infrastructure(infName, infType, infCost); 
      } 
      else 
      { 
       System.out.println("Infrastructure is not found."); 
      } 
     } 
    } 

回答

0

在Java中的Objects的默認值是null。這也適用於Object陣列的元素。

雖然數組ton本身被實例化,但其各個元素仍然是null並且需要分配。你需要在調用它們的任何操作之前實例化數組的元素:

for (int i=0; i < ton.length; i++) { 
    for (int j=0; j < ton[i].length; j++) { 
     ton[i][j] = new townObject(); 
     ton[i][j].setName(...); 
    } 
} 
+0

我已經在程序啓動時聲明它們了,我想要做的是鏈接2D數組內創建的對象。那可能嗎?順便說一句,我也試圖打印二維數組的值。你知道打印它的方式,以便當用戶輸入ton [i] [j]上的i和j時,它將打印它們的值。 – 2013-05-12 21:10:33

+0

首先解決'NPE'問題。沒有提供信息來查找異常的來源。堆棧跟蹤會告訴你那裏正在拋出NPE。 – Reimeus 2013-05-12 21:15:17

+0

NPE問題在****線,這是我不知道如何解決的部分。而對於已經正在工作的代碼的其他部分來說,打印卻不知如何打印出來。 – 2013-05-12 21:17:57