关于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.mzph.cn/news/931554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学校网站源码html高端网站建设的品牌

I:ASP.NET MVC3 部署的前期工作 1.确认部署的服务器操作系统环境 首先我们确认服务器的操作系统版本可以从系统命令行工具里输入: systeminfo 获取相关操作系统信息例如然后再确认IIS版本信息 -> 打开IIS管理工具即可接着确认.NET Framework的版本可以在系统命令行工具执行:…

引擎搜索网站模板化学sem是什么意思

课程简介 现在还能做解说吗、不会写解说文案怎么解决、不会配音怎么解决、如何找到合适的素材资源、如何变现…这是很多想做解说的伙伴最关心的几大问题。比如文案&#xff0c;我们推荐一个网站&#xff0c;10分钟搞定一篇文案&#xff0c;配音可以真人配音也可以软件配音。5.…

RK 系列 GPU 驱动检查方法

问题背景 在调试一块板卡时发现 GPU 驱动存在异常。当时通过 GST 播放视频,想查看 GPU 占用率,却发现按照 RK 系列通常的查询方法无法获取(设备节点不存在),由此怀疑 GPU 驱动未正常加载。 检查方法 方法一:查看…

Day-15【选择与循环】选择结构-if语句 - 实践

Day-15【选择与循环】选择结构-if语句 - 实践2025-10-08 13:27 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

做义工旅行有哪些网站wordpress验证码

Oracle提示错误消息ORA-28001: the password has expired&#xff0c;是由于Oracle11G的新特性所致&#xff0c; Oracle11G创建用户时缺省密码过期限制是180天&#xff08;即6个月&#xff09;&#xff0c; 如果超过180天用户密码未做修改则该用户无法登录。 Oracle公司是为了数…

咕乡

一篇模仿《王安遂》的拙作,以此纪念我初中的 OI 生涯。[1]我冒了严寒,回到相隔二千馀题,别了二十馀天的 OJ 去。 时候既然是初三;渐近 OJ 时,网络又崩溃了,404 吹进浏览器中,呜呜的响,从主页向外一望,泛白的 …

在东莞做网站广告专业的前景和就业方向

01为什么用 JavaScript 来开发桌面应用&#xff1f;曾经的 JavaScript 脆弱、简陋、甚至有被边缘化的危险&#xff0c;不过 JavaScript 在经过了两次飞跃后&#xff08;以 V8 为首的 JavaScript 引擎和 Node.js 的问世&#xff09;&#xff0c;不再受人欺负&#xff0c;早已升级…

opencv应用经典bug

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Linux随记(十八) - 详解

Linux随记(十八) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…

通信算法之281:大疆DJI无人机ID-DJI DroneID开源工程-相关问题-协议信息问题 - 实践

通信算法之281:大疆DJI无人机ID-DJI DroneID开源工程-相关问题-协议信息问题 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

手机网站适应屏幕罗湖网站(建设深圳信科)

目录 1、一致性算法 1.1、什么是分布式系统的副本一致性?有哪些? 1.2、在分布式系统中有哪些常见的一致性算法?

唐山如何做百度的网站建设国际域名的外贸网站

以前公司每年都有年底总结&#xff0c;来新公司没有了年底总结&#xff0c;总觉得缺点什么&#xff0c;公司没有就自己写吧&#xff0c;人生感悟在这里就不多说了&#xff0c;本篇主要总结一下这一年来知识点吧。 这些知识点&#xff0c;每个慢慢整理&#xff0c;将来要保证&am…

全国设计网站建设服务器的作用

【opencv】【CPU】windows10下opencv4.8.0-cuda C版本源码编译教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【opencv】【CPU】windows10下opencv4.8.0-cuda C版本源码编译教程前言准备工具cmakeopencv4.8.0opencv_contrib CMake编译VS2…

Linux 文件 MD5 校验完全指南

Linux 文件 MD5 校验完全指南在 Linux 系统中,文件的完整性校验是数据安全的基础操作 —— 无论是下载软件包、传输备份文件,还是验证配置文件是否被篡改,MD5 校验都是最常用的轻量工具。MD5 算法通过对文件内容计算…

怎样找素材做网站wordpress联系方式

到目前为止&#xff0c;Robomongo仍是MongoDB最好的客户端管理工具&#xff0c;如需在Ubuntu上安装Robomongo&#xff0c;可直接从官网下载.tar.gz压缩包进行解压&#xff0c;然后直接运行bin目录下的robomongo文件即可启动界面。例如我将下载下来的.tar.gz压缩包解压到/usr/lo…

地方网站怎么做推广建筑公司分几级资质

您好&#xff0c;了解到您在更新系统时遇到问题。目前使用的版本是比较靠前的版本吗&#xff1f;要求进行更新的是Windows 10 1709 吧&#xff1f;您可以尝试使用Media Creation Tool创建ISO介质&#xff0c;并使用该介质进行升级安装&#xff0c;看下效果&#xff1a;https://…

week2课后作业

动手动脑:代码在输出时调用名称相同的方法,传入的确实不同类型的参数,最终调用的是两个不同的方法,在调用名称相同的方法时会根据传入参数调用相应的方法

Java 语言程序设计(第二讲 方法)动手动脑与课后实验问题整理文档 - 20243867孙堃2405

一、动手动脑问题 (一)随机数生成相关 依据特定算法编写方法生成指定数目随机整数:已知纯随机数发生器的参数为 Modulus = 2 - 1 = int.MaxValue、Multiplier = 7⁵ = 16807、C = 0,且当显示过 2 - 2 个数之后才可…

唐山网站建设优化方法个人网站怎么做内容比较好

记录一下自己工作中常用的linux命令 查询类 top 实时查看进程 free -h 查看内存 df -h 查看已挂在的存储 fdisk -l 查看所有存储&#xff0c;包含未挂载 编辑类 passwd 修改密码&#xff0c;要进入到系统

asp网站开发模板临沂手机建站模板

作者 | 小碗汤来源 | 我的小碗汤今天演示一个项目&#xff0c;利用Unity做场景、用C#做交互逻辑&#xff0c;将k8s制作成一个3D射击游戏。正好最近在学习Unity&#xff0c;所以利用这个项目开始上手挺合适的。源码、可执行文件可以自行下载&#xff0c;也可在文末获取&#xff…