Java 循环空指针异常

Java 循环空指针异常,java,exception-handling,nullpointerexception,while-loop,Java,Exception Handling,Nullpointerexception,While Loop,如果新词为null,它不应该进入循环,但为什么它进入循环并给出java.lang.NullPointerException 它提供了stacktrace,但我没有在任何地方使用printStackTrace while(newWord!=null) 想想看,如果newWorld为null,那么当您对其调用方法时会发生什么?newWord本身为null。当对象为null时,不能对其调用任何方法,因为该对象未定义。因为.equals是一个方法,所以您将得到一个异常。请尝试以下方法: new

如果新词为null,它不应该进入循环,但为什么它进入循环并给出java.lang.NullPointerException

它提供了stacktrace,但我没有在任何地方使用printStackTrace

    while(newWord!=null)
想想看,如果newWorld为null,那么当您对其调用方法时会发生什么?

newWord本身为null。当对象为null时,不能对其调用任何方法,因为该对象未定义。因为.equals是一个方法,所以您将得到一个异常。请尝试以下方法:

newWord != null
这是一个调试器很容易解决的问题。学习使用调试器和学习任何新工具一样令人沮丧,但它会为您节省很多时间的痛苦。是你的朋友

!newWord.equals(null)
这是你的问题


使用新词!=null

它不会进入循环,因为

newWOrd.equals(null)
如果NPE为空,将抛出NPE

你的意思是

newWord != null

如果使用调试器,或查看堆栈跟踪中触发该行为的行,则可以看到此行为。

只检查newWord是否为null,而不检查br是否有任何剩余的读取内容

比如:


whilebr.hasnet

您得到的NullPointerException是因为while!newWord.equalsnull,它未被捕获,因为在此代码之后使用了try,catch


如果要抑制此异常,请将其同时放置!try-catch块中的newWord.equalsnull。

String.equal的参数不应为null,并显式传递null,因此是异常。使用复合表达式检查空字符串和特殊null


它试图在进入循环之前对表达式求值,很快就遇到了表达式!newWord.equalsnull,因为newWord为null,所以引发了一个异常。

为了避免条件表达式中的大多数情况下出现null异常,我建议您使用Yoda条件:

if(null != value)
此外,这适用于变量和常数之间的所有条件:

if(MY_CONSTANT_STRING.equals(myVariableString))

@约翰现在我很高兴!记得投票给任何帮助过你的人。它帮助我们脆弱的自我:-也接受你认为最有用的答案。String的equals方法永远不会作为对象输入,在这种情况下为null。如果一个对象为空,字符串的ifanObject instanceof行本身就可以了。啊,好多了。干得好,+1抑制异常不是这里的解决方案。将null传递到String.equals就可以了。问题是新词是空的。不知道,+1来对抗仇恨者。
if(MY_CONSTANT_STRING.equals(myVariableString))