这个if / while循环有什么问题?

时间:2013-08-06 02:10:04

标签: java loops

有人可以解释这段代码有什么问题吗?它看起来对我来说没问题,但它一直说表达式有一个非法的开头,并且{}是预期的,即使它在那里。

if (gamestate = 1) {
    while (life > 0) {
        if (atk > enemydef) {
            atk1 = atk - enemydef;
            enemylife = enemylife - atk1;
            System.in.println("Enemy health: " + enemylife);
            System.in.println("Your Health" + life);
        }
        if else(atk<enemydef) {
                        enemylife = enemylife;
        } else {
            enemylife = enemylife;
        }
    }
else {
    System.out.println("GAME OVER");
}

4 个答案:

答案 0 :(得分:3)

改变这个:

if else (atk < enemydef)

到此:

else if (atk < enemydef)

它是else if,而不是if else。并解决这个问题:

if (gamestate = 1)

将其更改为:

if (gamestate == 1)

正确的比较运算符为==,如果您编写单个=,则执行赋值,而不是相等比较。

答案 1 :(得分:2)

if(gamestate = 1)

应该是

if (gamestate == 1)

为了完整起见,我还要指出您对if else有疑问。正确的语法是else if

答案 2 :(得分:1)

这里有一些错误。

  • if (gamestate = 1)应为if (gamestate == 1)。单等号是赋值;双等号是布尔等价比较。

  • if else不是有效的表达式。你可能意思是else if

  • 您在else声明前面缺少一个大括号。 IntelliJ(我在这里用来格式化问题/答案)不相信它是它自己的声明,因此它将它与其他片段混为一谈。

答案 3 :(得分:0)

else if而不是if else。这条线

if else(atk<enemydef)

应该是

else if (atk<enemydef)

也是行

if(gamestate = 1)

需要

if (gamestate == 1)

=操作是分配,而==是相等运算符。 gamestate = 1始终会将gamestate设置为1