You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现数值对战游戏时while循环运行异常问题求助

问题排查与修复方案

核心错误梳理

  1. Scanner读取输入仅需要将接收的内容存在变量中即可,不需要定义多个Dice相关变量,你代码中声明的diceRollTwo到diceRollEight大多未被实际使用,属于冗余代码,不影响Scanner正常运行但会干扰逻辑梳理
  2. 生命值扣除不需要硬编码具体数值,满足扣血条件时直接对生命值变量做自减操作(player -= 1/monster -= 1)即可,硬编码会导致逻辑完全固定,无法动态计算剩余血量
  3. 无论输入什么都返回玩家扣血的原因有两个:一是扣血判定逻辑错误,拿玩家生命值和阈值10做比较,而非拿用户输入的数值做比较;二是循环开头就写了continue语句,后面所有扣血判断逻辑永远不会被执行
  4. while循环条件完全错误,原来的player <= challenge会导致只要玩家生命值小于10就永远循环,正确的循环条件是玩家和怪物的生命值都大于0,满足对战继续的前提,循环内部不需要嵌套多层if,每次循环走一次「接收输入→判定扣血→检查胜负」的流程即可

修复后的完整代码

import java.util.Scanner;

public class Task3 {
    public static void main(String[] args) {
        startGame();
    }

    public static void startGame() {
        // 固定阈值为10
        final int CHALLENGE_THRESHOLD = 10;
        int playerHp = 3;
        int monsterHp = 3;
        Scanner sc = new Scanner(System.in);

        // 双方都有生命值时继续对战
        while (playerHp > 0 && monsterHp > 0) {
            System.out.println("请输入1~20范围内的整数:");
            int inputNum = sc.nextInt();
            // 输入合法性校验
            if (inputNum < 1 || inputNum > 20) {
                System.out.println("输入不合法,请重新输入!");
                continue;
            }
            // 扣血判定逻辑
            if (inputNum <= CHALLENGE_THRESHOLD) {
                playerHp -= 1;
                System.out.println("玩家扣除1点生命值,当前剩余:" + playerHp);
            } else {
                monsterHp -= 1;
                System.out.println("怪物扣除1点生命值,当前剩余:" + monsterHp);
            }
        }
        // 胜负判定
        if (playerHp <= 0) {
            System.out.println("玩家生命值耗尽,怪物获胜!");
        } else {
            System.out.println("怪物生命值耗尽,玩家获胜!");
        }
        sc.close();
    }
}

关键修改说明

  • 移除所有冗余的dice变量,仅用一个inputNum变量接收每次用户输入,简化逻辑
  • 修正扣血判定规则,使用用户输入的数值和阈值10比较,符合需求
  • 扣血逻辑改为动态自减,无需硬编码生命值数值
  • 修正while循环的判定条件,仅在双方都存活时继续循环
  • 删除所有干扰逻辑的无效continue语句,仅在校验输入不合法时使用
  • 增加输入范围校验,符合题目要求的1~20输入规则
  • 对战结束后统一判定胜负,逻辑清晰易维护

内容的提问来源于stack exchange,提问作者Sarth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:48:03