我有一段代码,其中程序比较了两个字符串数组的值。即使初始化两个数组,我也得到一个java.lang.NullPointerException
。以下是相关代码:
String[] functions=new String [inputs+1];
int funCounter=0;
for (int a=0;a<2;a++)
{
for (int b=0;b<2;b++)
{
if (tokenizedString[b].equals(keywords[a])&&keywords[a].equals("add"))
{
System.out.println("Yay");
functions[funCounter]="add";
funCounter++;
}
}
}
这是我初始化tokenizedString的地方:
String[] tokenizedString;
tokenizedString=new String[2];
tokenizedString在此处以流的形式添加到Scanner中:
StringTokenizer st = new StringTokenizer(input," ");
这是我初始化关键字的地方:
String[] keywords;
keywords=new String[2];
有任何想法吗?谢谢!
最佳答案
当您访问tokenizedString [n]时,字符串数组将为您提供第n个元素。如果第n个元素未初始化,则对于对象数组,它将默认为null。
在这种情况下,避免空检查的一种更好的方法是,如果您确定另一个值永远不会为空,则切换字符串值的位置。所以代替:
tokenizedString[b].equals(keywords[a])
采用:
keywords[a].equals(tokenizedString[b])