【发布时间】:2016-02-17 06:51:36
【问题描述】:
检查二维数组中的 Null 值时,我是否不断收到 java.lang.NullPointerException 错误?
这是我的二维数组:
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 乔恩·杜德 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) 在完整脚本中的位置。
【问题讨论】:
-
在询问有关异常的问题时,您必须发布完整的堆栈跟踪并清楚地标识代码中引发异常的语句。请使用此信息更新您的帖子。
-
除非您以下列形式提供您的问题,否则无法确定:stackoverflow.com/help/mcve
-
供将来参考:可能最多有十几行与错误相关。尽量减少你的例子,你可能会自己发现错误。
标签: java arrays multidimensional-array nullpointerexception