当前位置: 首页 > news >正文

10.24总结

import java.util.*;
import java.util.concurrent.TimeUnit;

public class ArithmeticPractice {
private Set generatedQuestions = new HashSet<>();
private List questions = new ArrayList<>();
private List answers = new ArrayList<>();
private List results = new ArrayList<>();
private int totalQuestions = 30;
private int timeLimit = 5 * 60; // 5分钟,单位:秒
private Scanner scanner = new Scanner(System.in);
private boolean isTimeOut = false;

public static void main(String[] args) {ArithmeticPractice practice = new ArithmeticPractice();practice.generateQuestions();practice.startPractice();practice.showResults();
}// 生成30道不重复的题目
private void generateQuestions() {System.out.println("正在生成" + totalQuestions + "道题目...");while (questions.size() < totalQuestions) {int num1 = (int) (Math.random() * 100);int num2 = (int) (Math.random() * 100);int operator = (int) (Math.random() * 4); // 0:+,1:-,2:*,3:/String opSymbol = "";int result = 0;boolean valid = true;switch (operator) {case 0: // 加法opSymbol = "+";result = num1 + num2;break;case 1: // 减法,确保结果非负opSymbol = "-";if (num1 < num2) {valid = false;} else {result = num1 - num2;}break;case 2: // 乘法,确保结果不超过三位数opSymbol = "*";result = num1 * num2;if (result >= 1000) {valid = false;}break;case 3: // 除法,确保能整除且除数不为0opSymbol = "/";if (num2 == 0 || num1 % num2 != 0) {valid = false;} else {result = num1 / num2;}break;}// 检查题目是否有效且不重复String question = num1 + " " + opSymbol + " " + num2 + " = ?";if (valid && !generatedQuestions.contains(question)) {generatedQuestions.add(question);questions.add(question);answers.add(result);}}System.out.println("题目生成完毕,准备开始答题!");
}// 开始答题
private void startPractice() {System.out.println("\n答题开始!您有" + timeLimit/60 + "分钟时间完成" + totalQuestions + "道题。");System.out.println("请输入答案,然后按回车确认。");long startTime = System.currentTimeMillis();Thread timerThread = new Thread(new TimerRunnable(startTime));timerThread.start();for (int i = 0; i < totalQuestions; i++) {// 检查是否超时if (System.currentTimeMillis() - startTime > timeLimit * 1000L) {System.out.println("\n时间到!未完成的题目将视为错误。");isTimeOut = true;// 剩余题目标记为错误for (int j = i; j < totalQuestions; j++) {results.add(false);}break;}// 显示当前题目并获取答案System.out.print("\n第" + (i + 1) + "题: " + questions.get(i));try {if (scanner.hasNextInt()) {int userAnswer = scanner.nextInt();boolean isCorrect = (userAnswer == answers.get(i));results.add(isCorrect);// 即时判断并显示结果if (isCorrect) {System.out.println("正确!");} else {System.out.println("错误!正确答案是:" + answers.get(i));}} else {// 非数字输入视为错误scanner.next(); // 清除无效输入results.add(false);System.out.println("输入无效!正确答案是:" + answers.get(i));}} catch (Exception e) {results.add(false);System.out.println("输入错误!正确答案是:" + answers.get(i));}}// 中断计时线程timerThread.interrupt();
}// 显示答题结果
private void showResults() {int correctCount = 0;double accuracy = (double) correctCount / totalQuestions * 100;System.out.println("\n总题数: " + totalQuestions);System.out.println("做对: " + correctCount + "题");System.out.println("做错: " + (totalQuestions - correctCount) + "题");System.out.printf("正确率: %.2f%%\n", accuracy);System.out.println("------------------------------");
}// 倒计时线程
private class TimerRunnable implements Runnable {private long startTime;public TimerRunnable(long startTime) {this.startTime = startTime;}@Overridepublic void run() {try {while (true) {long elapsedTime = (System.currentTimeMillis() - startTime) / 1000;long remainingTime = timeLimit - elapsedTime;if (remainingTime <= 0) {break;}// 每分钟提示一次剩余时间if (remainingTime % 60 == 0) {System.out.println("\n剩余时间: " + remainingTime / 60 + "分" + remainingTime % 60 + "秒");}// 最后10秒每秒提示if (remainingTime <= 10) {System.out.println("\n剩余时间: " + remainingTime + "秒");}TimeUnit.SECONDS.sleep(1);}} catch (InterruptedException e) {// 线程被中断,正常退出}}
}

}

http://www.jsqmd.com/news/22693/

相关文章:

  • 《代码大全》读后感(1)
  • Function Calling
  • 20232302 2025-2026-1《网络与系统攻防技术》实验三实验报告
  • MCP Router使用学习
  • fvm Flutter多版本管理安装与常用指令
  • 人生八要(摘抄)
  • 20232322 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 详细介绍:vb.net编写DDE(Dynamic Data Exchange)服务器
  • 2025年内窥镜电缆线厂家权威推荐榜:B超线内窥镜电缆线,专业医疗线缆制造与定制化解决方案精选
  • 网络流题单
  • 无情可破万局
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,产能、专利、环保三维数据透视
  • 2025年盐趣科研教育深度解析:从录取数据看科研背景如何撬动名校门槛
  • 2025年10月膜结构厂家推荐榜:双资质企业对比评测 ,
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,聚焦资质、案例、售后的十家机构深度解读
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,高性能,稳定性强的行业优选
  • 2025年上海久宙集团:深度解析技术护城河与行业话语权
  • 2025年欧那德语深度解析:十二年在线小班模式全透视
  • 在Azure DevOps Server中分析Git代码库的健康状况
  • 2025 年 10 月蒸汽发生器厂家最新推荐,聚焦跨平台能力与售后体系的实用指南
  • 2025年唐卡装饰权威深度解析:家装行业新格局和品质承诺
  • 2025年欧那德语:深度解析其在线教学体系与师资配置
  • 2025年欧那德语权威解析:课程体系与师资全景盘点
  • 2025 年 10 月蒸汽发生器厂家最新推荐,聚焦高端定制需求与全案交付能力
  • 2025 年 10 月蒸汽发生器厂家最新推荐,精准检测与稳定性能深度解析
  • 2025年10月敏感肌产品推荐榜:淡斑修护面霜排名一览
  • LLM-提示词(二)
  • LangChain简单介绍
  • Windows下编译ffmpeg(MinGW+MSYS2)参考链接
  • 大语言模型基本了解