在java中使用字符串上的.equals引发空指针异常?
我有一个二维数组和。我传入一个方法,然后尝试遍历数组并找出其中有多少个。当使用.equals时,我不断得到一个null指针异常。该方法应返回数组中的数量。我尝试迭代二维数组,然后将二维数组转换为一维数组,但仍然出现异常我不确定我做错了什么,如果有任何帮助,将不胜感激。 我的代码是: 公共静态整数countseatString[][]aud{在java中使用字符串上的.equals引发空指针异常?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我有一个二维数组和。我传入一个方法,然后尝试遍历数组并找出其中有多少个。当使用.equals时,我不断得到一个null指针异常。该方法应返回数组中的数量。我尝试迭代二维数组,然后将二维数组转换为一维数组,但仍然出现异常我不确定我做错了什么,如果有任何帮助,将不胜感激。 我的代码是: 公共静态整数countseatString[][]aud{ int openSeats = 0; String [] audit; audit = new String[120]; int
int openSeats = 0;
String [] audit;
audit = new String[120];
int k = 0;
for(int i= 0; i < aud.length; i++)
for(int j = 0; j < aud[i].length; j++)
audit[k++] = aud[i][j];
for(int i= 0; i <= audit.length; i++){
openSeats = audit[i].equals("#")? +1:+0;
}
return openSeats;
由于循环条件,您将获得一个异常:
for(int i= 0; i <= audit.length; i++){
注意你是如何使用的,你声明了String[]audit,这一事实使得解决方案更加复杂,因为你可能试图将所有的二维都放在一维中,认为这会简化问题,但不会。留在二维中,进行搜索
int openSeats = 0;
for(int i= 0; i < aud.length; i++)
{
for(int j = 0; j < aud[i].length; j++)
{
if( aud[i][j].equals("#") )
{
openSeats++;
}
}
}
return openSeats;
正如其他人所指出的,如果您想增加值doopenseats+=audit[i],那么即使在将符号更改为之后,您也需要额外使用i来运行for-one迭代.equals?1:0;或使用if和openSeats++。您现在得到的NullPointer异常可能是因为audit.length始终是120,这是您定义的。您实际上应该检查audit[i]是null,因为您需要依赖它来知道数组的结束位置。否则,您可以使用ArrayList,而不必自己检查null。