我有这个:
while(victim.getHealth() > 1 && !victim.getName().equals(this.getName())) {
victim.hurt();
}
现在我注意到在特殊情况下,victim.getName()将返回null(这是想要的行为)。但是在这种情况下,我希望发生NullPointerException,因为我们基本上是为第二个条件调用null.equals(this.getName())。
然而,这并没有发生。如果我切换循环条件的顺序,例如
while(!victim.getName().equals(this.getName()) && victim.getHealth() > 1) {
victim.hurt();
}
当getName()返回null时,将抛出NullPointerException。
另外:如果这是||条件而不是&&,在java中,一旦找到一个,程序将停止检查真实条件吗?
答案 0 :(得分:0)
我没注意到在这种特殊情况下getName()== null victim.getHealth()总是低于1,所以java永远不会达到第二个条件。对不起,我现在需要休息一下。 :d