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

如何在Java的for循环中实现计时器?乘法游戏卡顿问题求助

乘法游戏计时卡顿问题修复

开发带计时功能的乘法游戏时,每轮设置5道题目,要求玩家3秒内作答,使用Timer和TimerTask实现计时后,出现超时程序卡顿、无法进入下一轮循环的问题。

问题根源

  1. Scanner.nextInt()是阻塞方法,超时后TimerTask仅打印提示,但无法中断主线程的输入等待,导致程序卡在输入环节无法推进。
  2. 原代码中的输入处理逻辑错误,重复调用nextInt()会引发不必要的输入读取或异常。
  3. Timer.cancel()仅终止定时器任务,无法解除主线程的阻塞状态。

修复后代码

import java.util.Random;
import java.util.Scanner;

public class GameLogic {
    private static int score = 0;

    public static void playGame() {
        Scanner keyboard = new Scanner(System.in);
        int roundCount = 5;

        for (int i = 1; i <= roundCount; i++) {
            // 生成随机乘法题目
            Random random = new Random();
            int firstNum = random.nextInt(9) + 1;
            int secondNum = random.nextInt(9) + 1;
            int multiply = firstNum * secondNum;
            System.out.printf("%n第%d题:%d X %d%n", i, firstNum, secondNum);

            boolean answeredInTime = false;
            int answer = 0;

            // 3秒超时等待输入
            keyboard.hasNextInt(3000);
            if (keyboard.hasNextInt()) {
                answer = keyboard.nextInt();
                answeredInTime = true;
            } else {
                System.out.println("时间到!");
                // 清除缓冲区无效输入,避免影响下一题
                keyboard.nextLine();
            }

            // 判定答案并更新分数
            if (answeredInTime) {
                if (answer == multiply) {
                    System.out.println("答对了!");
                    score += 20;
                } else {
                    System.out.println("答错了!");
                }
            }
        }

        System.out.printf("%n游戏结束!你的总得分:%d分%n", score);
        keyboard.close();
    }

    public static void main(String[] args) {
        playGame();
    }
}

关键修改说明

  • 移除Timer和TimerTask,改用Scanner.hasNextInt(3000)实现3秒超时等待,该方法会在指定时间内等待输入,超时后返回false,彻底避免主线程阻塞。
  • 超时后调用keyboard.nextLine()清除缓冲区的无效输入,保证下一题的输入读取不受影响。
  • 增加题目序号显示和最终得分统计,优化游戏体验。
  • 统一使用单个Random实例,避免重复创建对象浪费资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:45:12