2012-06-13 34 views
3

我試圖初始化一個具有整數1到n的字符串形式的向量。NullPointerexception在將值添加到向量中時正在拋出

這是我的向量聲明。

Vector<String> candidatesSet,frequentItemSet,mFCandidatesSet,mFSet = new <String>Vector(); 

我使用初始化環路

for(int i=0; i<crows; i++) 
     { 
      candidatesSet.add(Integer.toString(i+1)); 
     } 

在這裏,我們得到可變crowsduring運行時的值。

但它是在我將字符串添加到對象的行中引發NullpointerException。

我試圖通過

candidatesSet = null; 

intializing向量爲空,但它沒有工作

+0

用null初始化肯定會保證NullPointerException。 –

+0

您必須按照答案中給出的方式分配它們,因爲根據您的聲明,只有變量mFSet將被分配一個空Vector,但其他元素默認不會初始化爲空 – chaitanya

回答

2

首先,東西喜歡是錯的:

Vector<String> set = new <String>Vector(); 

正確的語法是這樣的:

Vector<String> set = new Vector<String>(); 

其次重要的是,如果你做這樣的事情:

Vector<String> set1,set2,set3,set4,set5 = new Vector<String>(); 

...只有set5將被初始化。每個變量必須獨立初始化。您可以做這樣的事情:

Vector<String> set1,set2,set3,set4,set5; 
set1 = set2 = set3 = set4 = set5 = new Vector<String>(); 

...但後來所有的變量都會指向同一個Vector,並修改一個變量會影響所有的人。你必須分別初始化每個變量。

三,這樣做:

candidatesSet = null; 

...什麼都不做,如果candidatesSet尚未初始化,因爲非原始實例變量初始化反正空。這是你的問題,你在空對象上調用.add(String),這個例子是NullPointerException

解決這些問題將使您的代碼正常工作,但還有最後一個問題。 Vector是一個有些過時的類,它已被Java Collections API取代。嘗試使用ArrayList,而不是Vector,就像這樣:

List<String> candidatesSet = new ArrayList<String>(); 

這將使你的代碼更有效和更古老。

+0

感謝,工作:) 另外我在想,矢量是一個比ArrayList更好的類(早期使用它) – StrawhatLuffy

2

嘗試

Vector<String> candidatesSet = new Vector<String>(); 

之前添加元素

+0

您剛剛聲明瞭該向量。你也必須注意添加任何元素。 – OscarSan

+0

OscarSan - 你知道你可以編輯**你自己的答案嗎? :-) –

+0

是hehe謝謝 – OscarSan

相關問題