3

我正在尝试以字符串的形式为初学者初始化一个具有整数 1 到 n 的向量。

这是我对向量的声明。

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

我用来初始化的循环是

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

这里我们得到运行时变量 crows 的值。

但它在我向对象添加字符串的行中抛出了 NullpointerException。

我尝试将向量初始化为空

 candidatesSet = null;

但它没有工作

4

2 回答 2

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尚未初始化,则什么也不做,因为非原始实例变量无论如何都被初始化为 null。那是您的问题,您正在调用.add(String)一个空对象,这种情况是NullPointerException.

解决这些问题将使您的代码正常工作,但还有最后一个问题。Vector是一个有点过时的类,它已被 Java Collections API 取代。尝试使用ArrayList代替Vector,如下所示:

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

这将使您的代码更高效且不那么陈旧。

于 2012-06-13T00:34:02.587 回答
2

尝试

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

添加元素之前

于 2012-06-13T00:26:32.467 回答