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

关于PPT的课后作业

动手动脑问题应用的是方法重载。
课后作业代码:
import java.util.*;

public class ArithmeticExam {
private static final Random random = new Random();
private static final Scanner scanner = new Scanner(System.in);
private static final int TOTAL_QUESTIONS = 30;
private static final int TIME_LIMIT = 300; // 5分钟倒计时(秒)

private static Set<String> generatedQuestions = new HashSet<>();
private static List<QuestionResult> wrongAnswers = new ArrayList<>();public static void main(String[] args) {System.out.println("=== 一位数四则运算考试 ===");System.out.println("考试规则:");System.out.println("- 共 " + TOTAL_QUESTIONS + " 道题");System.out.println("- 时间限制: " + TIME_LIMIT + " 秒");System.out.println("- 减法不允许出现负数");System.out.println("- 乘法结果不允许出现四位数");System.out.println("- 除法必须整除");System.out.println("=======================\n");System.out.print("按回车键开始考试...");scanner.nextLine();// 创建倒计时线程CountdownTimer timer = new CountdownTimer(TIME_LIMIT);Thread timerThread = new Thread(timer);timerThread.start();int correctCount = 0;boolean timeUp = false;// 开始考试for (int i = 1; i <= TOTAL_QUESTIONS; i++) {// 检查是否超时if (timer.isTimeUp()) {timeUp = true;System.out.println("\n⏰ 时间到!考试结束");break;}System.out.println("\n第 " + i + " 题 (剩余时间: " + timer.getRemainingTime() + "秒):");QuestionResult result = generateAndCheckQuestion(i);if (result.isCorrect()) {correctCount++;} else {wrongAnswers.add(result);}}// 停止计时器timer.stop();// 显示考试结果displayResults(correctCount, timeUp);// 显示错题if (!wrongAnswers.isEmpty()) {displayWrongAnswers();}
}/*** 生成并检查一道题目*/
private static QuestionResult generateAndCheckQuestion(int questionNumber) {String question;int correctAnswer;// 生成不重复的题目do {char operator = getRandomOperator();int num1, num2;do {num1 = random.nextInt(9) + 1; // 1-9num2 = random.nextInt(9) + 1; // 1-9} while (!isValidOperation(num1, num2, operator));correctAnswer = calculate(num1, num2, operator);question = num1 + " " + operator + " " + num2 + " = ";} while (generatedQuestions.contains(question));generatedQuestions.add(question);// 显示题目并获取答案System.out.print(question);long startTime = System.currentTimeMillis();String userInput = scanner.nextLine();long endTime = System.currentTimeMillis();// 处理用户输入int userAnswer;try {userAnswer = Integer.parseInt(userInput.trim());} catch (NumberFormatException e) {System.out.println("✗ 输入格式错误,视为答错");return new QuestionResult(questionNumber, question, correctAnswer, -1, false);}boolean isCorrect = (userAnswer == correctAnswer);if (isCorrect) {System.out.println("✓ 正确!");} else {System.out.println("✗ 错误!");}return new QuestionResult(questionNumber, question, correctAnswer, userAnswer, isCorrect);
}/*** 获取随机运算符*/
private static char getRandomOperator() {char[] operators = {'+', '-', '*', '/'};return operators[random.nextInt(operators.length)];
}/*** 验证运算是否合法*/
private static boolean isValidOperation(int num1, int num2, char operator) {switch (operator) {case '-':// 减法:不允许负数return num1 >= num2;case '*':// 乘法:结果不允许四位数(最大999)return num1 * num2 < 1000;case '/':// 除法:必须整除且除数不为0return num2 != 0 && num1 % num2 == 0;default:return true; // 加法总是合法的}
}/*** 计算结果*/
private static int calculate(int num1, int num2, char operator) {switch (operator) {case '+': return num1 + num2;case '-': return num1 - num2;case '*': return num1 * num2;case '/': return num1 / num2;default: return 0;}
}/*** 显示考试结果*/
private static void displayResults(int correctCount, boolean timeUp) {System.out.println("\n" + "=".repeat(50));System.out.println("考试结果统计");System.out.println("=".repeat(50));int answeredQuestions = timeUp ? (correctCount + wrongAnswers.size()) : TOTAL_QUESTIONS;double accuracy = (double) correctCount / answeredQuestions * 100;System.out.println("总题数: " + TOTAL_QUESTIONS);System.out.println("完成题数: " + answeredQuestions);System.out.println("正确题数: " + correctCount);System.out.println("错误题数: " + wrongAnswers.size());System.out.printf("正确率: %.2f%%\n", accuracy);if (timeUp) {System.out.println("未完成题数: " + (TOTAL_QUESTIONS - answeredQuestions));}
}/*** 显示错题*/
private static void displayWrongAnswers() {System.out.println("\n" + "=".repeat(50));System.out.println("错题回顾");System.out.println("=".repeat(50));for (QuestionResult wrong : wrongAnswers) {System.out.printf("第%d题: %s 你的答案: %d, 正确答案: %d\n",wrong.getQuestionNumber(),wrong.getQuestion(),wrong.getUserAnswer(),wrong.getCorrectAnswer());}
}/*** 倒计时计时器*/
static class CountdownTimer implements Runnable {private int remainingTime;private boolean timeUp = false;private boolean running = true;public CountdownTimer(int totalTime) {this.remainingTime = totalTime;}@Overridepublic void run() {try {while (remainingTime > 0 && running) {Thread.sleep(1000);remainingTime--;}if (remainingTime <= 0) {timeUp = true;System.out.println("\n⏰ 时间到!");}} catch (InterruptedException e) {Thread.currentThread().interrupt();}}public boolean isTimeUp() {return timeUp;}public int getRemainingTime() {return remainingTime;}public void stop() {running = false;}
}/*** 题目结果类*/
static class QuestionResult {private int questionNumber;private String question;private int correctAnswer;private int userAnswer;private boolean correct;public QuestionResult(int questionNumber, String question, int correctAnswer, int userAnswer, boolean correct) {this.questionNumber = questionNumber;this.question = question;this.correctAnswer = correctAnswer;this.userAnswer = userAnswer;this.correct = correct;}// Getter方法public int getQuestionNumber() { return questionNumber; }public String getQuestion() { return question; }public int getCorrectAnswer() { return correctAnswer; }public int getUserAnswer() { return userAnswer; }public boolean isCorrect() { return correct; }
}

}
思路:使用Random生成1-9数字和随机运算符,通过Set去重确保题目不重复,用Scanner实时接收答案,TimerThread控制倒计时,最后统计正确率和显示错题。

总结:这是一个包含题目生成、输入验证、时间控制和结果统计的完整考试系统,通过面向对象设计确保代码结构清晰且功能完善。

http://www.gsyq.cn/news/17278.html

相关文章:

  • RK 系列 GPU 驱动检查方法
  • 算法第一章
  • mac打开app提示文件损坏解决方案
  • 考研系列—操作系统:冲刺笔记(1-3章) - 指南
  • 2025工业网线优质厂家最新推荐榜:品质卓越与技术领先之选
  • sg.Multiline 和 sg.Output 有什么区别?怎么看起来一样?
  • Syncfusion重构Essential Studio套件,为开发者提供更灵活选择
  • 2025 年逸发粘接认证推荐:依托德系标准与全链条服务,打造粘接及复材技术解决方案优质选择
  • Prj09--8088单板机C语言8253产生1KHz方波(1) - 详解
  • Rocky9系统Grub修复实验
  • Linux 与 Windows:哪个操作便捷的系统适合你?
  • 2025 年绞车源头厂家最新推荐榜:双速 / 回柱 / 张紧等设备优质直供企业,口碑与实力兼具!张紧/运输/凿井/矿用绞车厂家推荐
  • set 初始化
  • PCIe扫盲——链路初始化与训练基础(一)
  • 2025 波纹管生产厂家最新推荐榜:预应力 / 镀锌金属等品类精选,成都津钢领衔优质品牌清单
  • 2025 年国内废气处理厂商最新推荐排行榜:聚焦综合实力与服务能力,精选优质品牌助企业合规转型
  • 书缘幡云世界(1).众阳之阳.epub
  • 2025 年最新推荐铁附件实力厂家榜单:涵盖电力金具 / 热镀锌 / 线路 / 10 - 35KV 等多类型产品,助力工程方精准筛选优质合作企业
  • c++/c语音分号的使用情况
  • PCIe扫盲——物理层逻辑部分基础(三)
  • 2025 年景观石厂家最新推荐榜单:千层石 / 泰山石等各类景观石优质企业全方位解析及选购指南驳岸石/太湖石/龟纹石/草坪石景观石厂家推荐
  • 【Java】CopyOnWriteArrayList - 指南
  • 完整教程:LeetCode Hot100刷题——完全平方数
  • 2025 最新推荐!办公桌厂商权威榜单重磅发布,涵盖老板 / 员工 / 实木 / 屏风办公桌优质之选
  • 2025 办公家具厂家最新推荐榜:实木 / 现代 / 环保 / 智能 / 定制品类精英盘点,5 大优选品牌选购指南
  • 2025机械加工厂家口碑推荐榜:技术实力与行业口碑深度解析
  • 2025通风气楼厂家推荐榜:专业通风与高效节能口碑之选
  • 储罐源头厂家最新推荐榜:技术实力与市场口碑深度解析
  • 机器学习——放回抽样 - 详解
  • 2025 年废品回收公司最新推荐排行榜权威发布,聚焦桂林废铜/废铁/废铝/电缆电线等回收领域优质公司