检查2D数组中的Null值时,是否一直收到java.lang.NullPointerException
错误?
这是我的2D阵列:
String[][] userInfo = new String[10][4];
这是一种根据用户输入删除数组中整个条目的方法:
private void removeUser(String userInfo[][]) {
String first = "";
String last = "";
Scanner searchUserinput = new Scanner(System.in);
String searchUser;
System.out.println("Which user would you like to search for? Please enter their first and last name");
searchUser = searchUserinput.nextLine();
/*System.out.println(searchUser); */
String[] words = searchUser.split("\\s+");
if (words.length > 2) {
System.out.println("Please enter only the first and last name");
}
else {
for (int i = 0; i < words.length; i++) {
first = words[0];
last = words[1];
}
}
outerloop:
for (int row = 0; row < userInfo.length;) {
for (int column = 0; column < userInfo[row].length;) {
if (userInfo[row][column]!= null) {
if (userInfo[row][0].equals(first) && userInfo[row][1].equals(last)) {
System.out.println("We found this user's contact info the database.");
System.out.println("Removing now...");
userInfo[row][0] = null;
userInfo[row][1] = null;
userInfo[row][2] = null;
userInfo[row][3] = null;
break outerloop;
}
else{
column ++;
row ++;
break;
}
}
}
row++;
}
}
我们说我有许多带有数据的行和列,如下所示:
比尔史密斯123 123 Jon Dude 234 23 另一个盖伊2332 435 有人1212 12如果我尝试删除说Bill Smith
,则不会抛出任何错误,或者如果我尝试删除Another Guy
,则仍然没有问题。但是,例如,如果我删除Bill Smith
,则尝试删除Jon Dude,这就是我收到错误的原因。但Java告诉我错误来自于我正在使用if (userInfo[row][column]!= null)
检查空值的行,而不是理解原因。
Exception in thread "main" java.lang.NullPointerException
at Lab02.removeUser(Lab02.java:96)
at Lab02.<init>(Lab02.java:32)
at Lab02.main(Lab02.java:5)
第96行是完整脚本中if (userInfo[row][column]!= null)
的位置。
答案 0 :(得分:1)
我怀疑此行实际上引发了异常:
if (userInfo[row][0].equals(first) && userInfo[row][1].equals(last)) {
之前的行只测试userInfo[row][column]
是否为null
,但(userInfo[row][0]
和/或(userInfo[row][1]
可能为null
。因此,您可以在equals()
值上调用null
。