Java计算出哪个数字先为零

标签 java if-statement int do-while

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

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

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

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

最佳答案

看看你的循环继续条件:

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

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

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

关于Java计算出哪个数字先为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932068/

相关文章:

java - 如何在Java中获取准确的deltaTime

java - 对 URL 进行编码后出现 URISyntax 异常

java - 什么是NullPointerException,我该如何解决?

java - 为什么该算法执行IF语句时没有错误?

c - scanf 和空白字符

java - 如何在方法中编写嵌套 for 循环(干净的代码)

PHP 使用结果作为变量

javascript - 将多个 IF ELSE 语句组合成 AND 语句会导致脚本停止工作

c - 如何使用 eof 获取用户输入的整数,直到他按下 Enter?

java - 原始类型int实际上如何转换为String?