2011-11-21 49 views
0

我的程序正在運行。它只是在節目進行到一半時說:爲什麼我的數組得到NullPointerException錯誤?

Exception in thread "main" java.lang.NullPointerException 
at Example.main(Example.java:33) 

這裏是我的代碼:

String [] iArray ; 
String i ; 
int counter=1 ; counteragain=-1, q; 

do { 
System.out.print ("\n\nItem Code : ") ; 
i = s.next(); 

if (i.equals ("0")){ 
    counter = 0 ; 
} else { 
    System.out.print ("\nQuantity: ") ; 
q = s.nextInt() ; 
counteragain++ ; 

i = iArray[counteragain]; 
} 
} while (counter!=0) ; 

在那裏我遇到了錯誤的路線是:

i = iArray[counteragain]; 

爲什麼我得到這個錯誤?我的語法錯了嗎?但爲什麼它運行我的程序?

任何幫助將不勝感激。

+2

iArray尚未分配任何值。 – jerjer

+0

's'是什麼?它從未被宣佈。 –

回答

2

String [] iArray ;永遠不會被實例化。所以,最初,iArray爲空。

當你得到一個元素i = iArray[counteragain];時,你試圖訪問一個沒有實際意義的數組,因此拋出了一個NullPointerException

我不知道什麼是你的數組的大小,而是未廢除它,你將要做的:現在

String[] iArray = new String[size]; 

iArray的長度是size的佔位符,但每個元素將是null因爲它沒有被賦值。即iArray[0]將爲空,因爲在元素0處沒有值。

4

您沒有初始化此數組。因此它有一個null值。 你必須做這樣的事情

String[] iArray = new String[numberOfElements]; 

你做需要初始化在聲明數組。所以你可以先回憶這個numberOfElements然後初始化它。

iArray = new String[numberOfElements]; 
0

iArray從不初始化。所以取消引用的iArray[counteragain]用空引用進行處理;因此NullPointerException

0

您需要分配數組。 該行String [] iArray;只聲明瞭對字符串類型數組的引用,但沒有爲該數組中的對象分配任何空間; 你需要該行更改爲類似

String[] iArray = new String[size of needed array]; 

如果你不能預測所需的大小,它可能是最好使用一個集合類型如ArrayList

0

你的代碼是不完整的,它不顯示什麼是(我猜它是一個迭代器)以及它來自哪裏。 從您發佈的異常的代碼是

String [] iArray; 

你沒有初始化iArray所以它是空的後果;你應該發佈一個工作方法/類來獲得正確的答案。

0

iArray = new String[n];,其中niArray中的元素數。

應幫助您擺脫NullPointerException ..

相關問題