2013-05-04 101 views
1

我有一個類調用Info和它的方法load包含這段代碼:Java異常

Circuito[] circuito=new Circuito[19]; 
for(int i=0;i<circuito.length;i++) 
    circuito[i] = new Circuito(nome,immPath,sfondoPath,previsioni,giri,tempoGiro,carico); 

我通過正確所有參數(我打印toString()方法來檢查它是否工作)。 然後,在另一類稱爲New我有這樣的代碼:

Info info=new Info(); 
info.load(); 
System.out.println(info.getCircuito()[0].toString()); 

(類Info包含方法getCircuito到返回整個陣列)。

然後,收到此錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at New.<init>(New.java:21) 

線21是System.out.print線。

我不明白是哪個問題...謝謝你的幫助!

+2

也顯示'getCircuito()'方法的代碼。 – 2013-05-04 18:16:49

+0

沒有getCircuito方法不禁幫助 – 2013-05-04 20:04:00

回答

2

唯一的3種可能性用於NPE在線路

System.out.println(info.getCircuito()[0].toString()); 

是:

  • 信息是null。不可能,因爲您之前成功撥打了info.load()
  • getCircuito()返回null
  • getCircuito()[0]null

就是這樣。所以在你的情況下,load()的代碼顯示它可能是getCircuito()返回null

編輯:找到原因。您正在致電

Circuito[] circuito=new Circuito[19]; 

在您的load()方法中。因此,您正在將新數組分配給類變量,而不是分配給局部作用域中的新變量,該變量在load()方法之後再次消失。將上述行更改爲

circuito=new Circuito[19]; 

你應該沒問題。

+0

太好了!現在工作!非常感謝你! :* – 2013-05-05 10:52:18

0

當然,由於某種原因,你並沒有填滿你的數組。也許你已經在一個非常狹窄的範圍內定義了Info類的Circuito類實例,就像循環一樣。

嘗試調用Info類中的另一個索引。如果可行,那麼問題是索引0.

嘗試獲取整個數組並打印它。我猜整個數組將是NULL。

最後,檢查您是否在不必要的地方使用了static關鍵字。