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

Java开发中如何在ActionListener的switch case生成新随机数

问题根因
  • 目标答案Main.answer是类加载时就初始化的静态变量,仅在程序第一次启动时生成一次,重启逻辑没有更新这个值。
  • 重启分支的逻辑不完整,仅重置了计数和提示文本,既没有重新生成随机数,也没有清空用户输入框。
  • HigherLowerGame类中定义的randomNumber属于冗余代码,全程没有被实际调用,游戏判断逻辑始终引用的是Main.answer这个固定初始值。
修复方案
  1. 直接在重启按钮的事件逻辑中补充生成新随机数、清空输入框的代码,不需要改动整体结构。
  2. 删除项目中没用的冗余导包和无用字段,避免编译异常。
  3. 顺带修复猜中时计数少算一次的小bug。

具体修改代码

找到HigherLowerGame类的actionPerformed方法,替换restart分支的逻辑:

case "restart": 
    // 重置猜测计数
    Main.guessCounter = 0;
    Main.guessValue.setText(String.valueOf(Main.guessCounter));
    // 清空历史提示和输入框内容
    Main.playerAnswer.setText("");
    Main.playerGuess.setText("");
    // 生成新的1-100随机答案
    Main.answer = Main.ran.nextInt(100) + 1;
    break;

找到猜中逻辑的else分支,补充计数累加,避免次数统计错误:

else{
    Main.guessCounter++;
    Main.guessValue.setText(String.valueOf(Main.guessCounter));
    JOptionPane.showMessageDialog(null, "Nailed it! It took you " + Main.guessCounter + " guesses! The number was " + Main.answer );
}

可清理的冗余内容

  • 删除HigherLowerGame类中未使用的字段:Main obj = null;、Random ran = new Random();、int randomNumber = ran.nextInt(100) + 1;
  • 删除未使用的导包:java.awt.EventQueue、javafx.scene.paint.Color、javax.swing.JFrame

改完之后点击重启按钮就会生成新的随机数,所有状态回归初始开局状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:33:41