当我运行以下代码时,出现“java.lang.NullPointerException”:
while(StringName[PlaceString] != null){
StringCounter = 0;
while(StringCounter < StringName[PlaceString].length()){
System.out.println("PlaceString: " + PlaceString + " PlaceLine: "
+ PlaceLine + " Length of string: " + StringName[PlaceString].length());
//Does stuff with string
}}
输出为:
PlaceString: 0 PlaceLine: 0 Length of string: 2
Exception in thread "main" java.lang.NullPointerException
错误的根源是:
while(StringCounter < StringName[PlaceString].length()){
尽管它运行打印变量值的下一行。我不明白为什么它在可以打印 NullPointer 的值时提示 NullPointer。
编辑: 由于我没有收到 java.lang.StringIndexOutOfBoundsException,问题是:
Java substring : string index out of range
没有帮助。
最佳答案
您没有显示所有相关代码,但根据异常及其位置,您很可能在内部 while
期间设置了 PlaceString
的值:
while(StringCounter < StringName[PlaceString].length()){
System.out.println("PlaceString: " + PlaceString + " PlaceLine: "
+ PlaceLine + " Length of string: " + StringName[PlaceString].length());
//Does stuff with string
StringCounter++; // or something close
}
在某个迭代中,StringName[PlaceString]
引用 null
元素。
因此 NPE 被抛出。
外部的while
在这里没有帮助:
while(StringName[PlaceString] != null){
因为在内循环终止迭代之前它不会执行。
因此,您可以通过在内部 while
中添加防护来避免 NPE:
while(StringName[PlaceString] != null && StringCounter < StringName[PlaceString].length()){
System.out.println("PlaceString: " + PlaceString + " PlaceLine: "
+ PlaceLine + " Length of string: " + StringName[PlaceString].length());
//Does stuff with string
}
关于java - 如何在 Java 中测试字符串索引是否为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268635/