当前位置: 首页 > 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.gsyq.cn/news/30826.html

相关文章:

  • 《代码大全》读后感(1)
  • fvm Flutter多版本管理安装与常用指令
  • 详细介绍:vb.net编写DDE(Dynamic Data Exchange)服务器
  • 2025年内窥镜电缆线厂家权威推荐榜:B超线内窥镜电缆线,专业医疗线缆制造与定制化解决方案精选
  • 网络流题单
  • 无情可破万局
  • 2025年盐趣科研教育深度解析:从录取数据看科研背景如何撬动名校门槛
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,聚焦资质、案例、售后的十家机构深度解读
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,高性能,稳定性强的行业优选
  • 在Azure DevOps Server中分析Git代码库的健康状况
  • 2025 年 10 月蒸汽发生器厂家最新推荐,聚焦跨平台能力与售后体系的实用指南
  • 2025年唐卡装饰权威深度解析:家装行业新格局和品质承诺
  • 2025年欧那德语:深度解析其在线教学体系与师资配置
  • 2025年欧那德语权威解析:课程体系与师资全景盘点
  • 大语言模型基本了解
  • 标签打印服务系统详细设计与实施文档
  • Transformer基本结构介绍
  • 20232427 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • (第七次)tensorflow与keras
  • (第六次)聚类和神经网络
  • [java 锁]
  • 深入解析:windows输入法中英切换(英文提示)ALT + SHIFT切换(搜狗输入法CTRL+SHIFT+E切换)英文键盘
  • 部分思维题
  • 别再踩坑!真正有效的最佳免费数据恢复软件,亲测能救
  • rent8_wechat 微信消息提醒设置教程 - 详解
  • Titanic轮船人员生存率预测
  • 自行搭建了几个AIGC小站点,可结合接口平台使用
  • Linux 内核空间 并发竞争处理 共享资源线程同步 - 实践
  • 【轨物方案】变频器物联网软硬件一站式解决方案 - 详解
  • 人工智能初了解