2013-08-06 53 views
-5

有人可以解释这段代码有什么问题吗?它对我来说看起来不错,但它一直说有表达式的非法开始,并且即使它在那里也是预期的。这个if/while循环有什么问题?

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"); 
} 
+1

@Makoto:你的编辑把while循环的括号放在else之前,而不是像之前那样在一个单独的行上。当问题明显是语法问题时,您不应该进行重要的编辑。 – siride

+0

@Geobits:是的,大括号仍然不存在,但现在由于编辑而变得更加不明显。 – siride

+0

你们真的很想念的一件事是,它说System.in.println –

回答

2
if(gamestate = 1) 

应该

if (gamestate == 1) 

为了完整起见,我还指出,你有问题if else。正确的语法是else if

+0

Yoda条件在Java和C#中是不必要的,因为您不能以这种方式在if语句中分配变量,除非变量是布尔值(在这种情况下,您可能首先排除了相等运算符)。 – siride

+0

@siride是的,你是对的;在这种情况下它们是不必要的。 – arshajii

0

这是else if而不是if else。该生产线

if else(atk<enemydef) 

应该

else if (atk<enemydef) 

还行

if(gamestate = 1) 

有待

if (gamestate == 1) 

=操作分配新建分配FY而==是平等运算符。 gamestate = 1将始终设置gamestate1

3

更改此:

if else (atk < enemydef) 

这样:

else if (atk < enemydef) 

else if,不if else。而且还解决这个问题:

if (gamestate = 1) 

它改成这样:

if (gamestate == 1) 

正确的比较操作是==,如果你写一个=然后进行分配,而不是一个平等的比较。

+0

哦谢谢你。它已经很久了,因为它是用java编码的。非常重视。 –

1

这里有一些问题。

  • if (gamestate = 1)应该是if (gamestate == 1)。单个等号是分配;双等号是布尔等价比较。

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

  • 您是从您的else语句的前面缺少一个支柱。 IntelliJ(这是我用来设置问题/答案的地方)不相信它是它自己的声明,所以它将它与其他片段混合在一起。