澄清“!” java中的运算符

时间:2015-05-04 16:17:06

标签: java boolean

我将布尔变量碰撞初始化为false。

现在在if语句中,假设我的if条件如下:

if(!collision)

这是否意味着如果碰撞与初始化相反,if语句将执行?意思是,当!collision返回true时会执行吗?

因为我把它初始化为false所以有点困惑,我想在collisionfalse时运行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;
        }

5 个答案:

答案 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的逻辑表达式完成的。

修改

只是,!运算符只是值的反面。 !truefalse!falsetrue。按照我上面的解释,您可以结合这些知识来创建解决方案。

答案 4 :(得分:0)

当执行if(!collision)时,首先它会检查碰撞的值。我们假设它是'假的'。然后 !运算符将其转换为true。与假相反。那么值为'true'所以,if语句将执行其代码块。