我将布尔变量碰撞初始化为false。
现在在if语句中,假设我的if条件如下:
if(!collision)
这是否意味着如果碰撞与初始化相反,if语句将执行?意思是,当!collision
返回true
时会执行吗?
因为我把它初始化为false所以有点困惑,我想在collision
为false
时运行if语句,但不知道!collision
是否正确做或不做。
要求的代码。仍然困惑于条件是什么。我将碰撞初始化为false。因此,我希望语句在错误时执行。我应该写if(碰撞)还是if(!collision)?
boolean collision = false;
boolean winner = false;
while(!winner){
//Main loop where user will be able to move the ships and try to destroy the ship
//boolean shipAlive = true/false; YET TO ADD!
//if(!shipAlive) -> winner = true; YET TO ADD!
//movement of ships
if(!collision){
System.out.println("Player 1: L, R, or S? (L = Left, R = Right, S = Stay)");
String p1Input = IO.readString();
int k = movement(p1Input, player1);
while (k == 1){
System.out.print("Error! Enter either L, R or S: ");
p1Input = IO.readString();
k = movement(p1Input, player1);
}
}
collision = fireProjectileUp();
if(collision){
winner = true;
}
答案 0 :(得分:1)
!代表不是Java。所以如果你有像
这样的东西if(!true) {
//doSomething
} else {
//Something else --- This is executed.
}
if(!false) {
//doSomething --- This is executed.
} else {
//Something else
}
true和false是比较操作的最终结果
答案 1 :(得分:0)
!
表示不是,因此您的表达式将转换为if( NO 碰撞)。
检查documentation以获取更多信息。
答案 2 :(得分:0)
是的,当碰撞为假时,你的if语句将被执行 !false返回true
答案 3 :(得分:0)
您已经提出了一个问题,但我怀疑这对您来说有点XY问题。您已询问有关!
运算符的说明,然后继续解释not
运算的确切内容。
在构造条件时,您希望操纵逻辑,以便在您需要它时评估为真 。例如,如果发生碰撞,我想要运行一些东西。
if(collision)
简单。这是因为当您需要它时,它将评估为true
。现在,如果他们没有碰撞,你想要运行一些东西。
if(!collision)
如果碰撞为假,它再次评估为真。或者,当你想要它时。这里的技巧是如何以编译器理解的方式表达你想要的东西,这是通过解析为某个布尔值true或布尔值false的逻辑表达式完成的。
修改强>
只是,!
运算符只是值的反面。 !true
为false
,!false
为true
。按照我上面的解释,您可以结合这些知识来创建解决方案。
答案 4 :(得分:0)
当执行if(!collision)时,首先它会检查碰撞的值。我们假设它是'假的'。然后 !运算符将其转换为true。与假相反。那么值为'true'所以,if语句将执行其代码块。