我正在尝试初始化一个向量,该向量以字符串的形式包含整数1到n。
这是我对载体的声明。
Vector<String> candidatesSet,frequentItemSet,mFCandidatesSet,mFSet = new <String>Vector();
我用来初始化的循环是
for(int i=0; i<crows; i++)
{
candidatesSet.add(Integer.toString(i+1));
}
这里我们得到变量crowsduring runtime的值。
但它在我向对象添加字符串的行中抛出了NullpointerException。
我尝试通过
将向量初始化为null candidatesSet = null;
但它没有用
答案 0 :(得分:2)
尝试
Vector<String> candidatesSet = new Vector<String>();
添加元素之前
答案 1 :(得分: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>();
这将使您的代码更高效,更少陈旧。