【问题标题】:Java working out which number hits zero firstJava计算出哪个数字首先达到零
【发布时间】:2016-12-20 07:12:35
【问题描述】:

我正在构建一个简单的格斗游戏来测试循环和 if 语句,但是我遇到了一种复杂的逻辑问题。

当玩家或敌人的生命值为零时循环结束,但是我发现我的代码无法检测到哪个生命值首先达到零导致玩家总是获胜。

是否有一种简单的方法可以跟踪哪个数字首先达到零从而打破循环?

do {

    @SuppressWarnings("resource")
    Scanner reader = new Scanner(System.in);
    System.out.println("1: Attack. 2: Defend");
    int n = reader.nextInt();
        if (n == 1){
         PHP = (PHP-EATK);
         EHP = (EHP-PATK);
        } else if (n == 2){
            PHP = (PHP-Math.max(0, EATK-PDEF));
        }
        System.out.println("P "+PHP);
        System.out.println(EHP);
}
    while (PHP >= 1 || EHP >= 1);

if(PHP <= 0){
    System.out.println("You Lose!");
 }else if (EHP <= 0){
     System.out.println("You win!"); 
 }

【问题讨论】:

    标签: java if-statement int do-while


    【解决方案1】:

    看看你的循环继续条件:

    while (PHP >= 1 || EHP >= 1)
    

    意思是“当玩家他的敌人可以战斗时,继续前进”。换句话说,你继续战斗直到他们都死了,此时你宣布玩家获胜,即使是平局。

    将条件更改为“当玩家他的敌人可以战斗时”将解决此问题。

    【讨论】:

    • 啊,好吧,那我原来是在 &&
    【解决方案2】:

    while (PHP &gt;= 1 || EHP &gt;= 1); 更改为while (PHP &gt;= 1 &amp;&amp; EHP &gt;= 1);

    你在你想要的地方使用 OR 操作和

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 2018-03-27
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多