Java猜数字游戏问题:如何在while循环中添加重试输入框
Java猜数字游戏修复方案
你的代码存在几个核心问题,导致无法实现重试输入和正确的游戏逻辑:
forLite和forStort方法中每次调用nyttTall()会生成新的随机数,这会让游戏的目标数字不断变化,完全偏离猜数字的核心逻辑——目标数字应该在游戏开始时固定,直到猜对为止。kjørspill方法的循环逻辑错误:没有在循环内重新获取用户的新输入,且猜测次数antall被重复累加。- 重试输入的逻辑应该放在
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
相关产品推荐
相关产品推荐

