使用引发的数组空指针异常。java中字符串上的等于?
我有一个由“#”和“.”组成的二维数组我传入一个方法,然后尝试遍历数组并找出其中有多少“#”。在使用时,我不断收到NULLPOINTER异常。等于。该方法应返回数组中“#”的数量。我尝试迭代二维数组,然后将二维数组转换为一维数组,但仍然出现异常我不确定我做错了什么,如果有任何帮助,将不胜感激。 我的代码是:
公共静态整数countSeats(字符串[][]aud){
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;
# 1 楼答案
正如其他人所指出的,您通过使用
i <= audit.length;
而不是i < audit.length;
来额外运行for
循环一次。此外,作为一种良好的实践,始终将字符串文本保持在方法调用的左侧。例如,代替aud[i][j].equals("#")
,做"#".equals(aud[i][j])
以避免任何NPE的可能性# 2 楼答案
由于循环条件,您将获得一个异常:
注意您是如何使用
<=
而不是<
。在整个audit
数组中循环,然后比应该的多循环一次,导致NullPointerException# 3 楼答案
声明String[]audit这一事实使解决方案更加复杂,因为您可能试图将所有二维内容都放在一维中,以为这样可以简化问题,但事实并非如此。呆在二维空间里,进行搜索