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

Java猜数字游戏问题:如何在while循环中添加重试输入框

Java猜数字游戏修复方案

你的代码存在几个核心问题,导致无法实现重试输入和正确的游戏逻辑:

  1. forLite和forStort方法中每次调用nyttTall()会生成新的随机数,这会让游戏的目标数字不断变化,完全偏离猜数字的核心逻辑——目标数字应该在游戏开始时固定,直到猜对为止。
  2. kjørspill方法的循环逻辑错误:没有在循环内重新获取用户的新输入,且猜测次数antall被重复累加。
  3. 重试输入的逻辑应该放在while循环内部,每次给出提示后重新弹出输入框获取新的猜测值。

以下是修复后的完整代码:

修改后的Tallspill类

import static javax.swing.JOptionPane.*;

class Tallspill {

    // 生成0-200之间的随机数(若需1-200,改为Math.random()*200 +1)
    public int nyttTall() {
        int tilfeldig = (int) (Math.random() * 201);
        return tilfeldig;
    }

    public void visMelding(String melding) {
        showMessageDialog(null, melding);
    }

    // 仅负责显示"过小"提示,无需重新生成目标数字
    private void forLite(int tall) {
        String melding = tall + " er for lite. Prøv igjen!";
        visMelding(melding);
    }

    // 仅负责显示"过大"提示,无需重新生成目标数字
    private void forStort(int tall) {
        String melding = tall + " er for stort. Prøv igjen!";
        visMelding(melding);
    }

    public void avsluttRunde(int antall, int tall) {
        String melding = tall + " er riktig. Du brukte " + antall + " forsøk.";
        visMelding(melding);
    }

    public void kjørspill() {
        int random = nyttTall(); // 游戏启动时固定目标数字
        int tall;
        int antall = 0;

        do {
            tall = Integer.parseInt(showInputDialog("Skriv inn et tall mellom 0 og 200"));
            antall++; // 每输入一次,猜测次数加1

            if (tall < random) {
                forLite(tall);
            } else if (tall > random) {
                forStort(tall);
            } else {
                avsluttRunde(antall, tall);
            }
        } while (tall != random); // 猜错则循环重试
    }
}

Test类保持不变

public class Test {
    public static void main(String[] args) {
        Tallspill spill = new Tallspill();
        spill.kjørspill();
    }
}

关键修改说明:

  • 移除forLite和forStort中错误的nyttTall()调用,这两个方法仅负责显示提示,不参与目标数字生成。
  • 改用do-while循环,确保用户至少输入一次,每次循环都会重新弹出输入框获取新猜测值。
  • 调整猜测次数计数逻辑,每次用户输入后累加次数,避免重复计数。
  • 优化循环内条件判断结构,用else if让逻辑更清晰,减少冗余判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:25:53