当前位置: 首页 > 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.hskmm.com/?act=detail&tid=26693

相关文章:

  • RK 系列 GPU 驱动检查方法
  • 咕乡
  • Linux随记(十八) - 详解
  • week2课后作业
  • Java 语言程序设计(第二讲 方法)动手动脑与课后实验问题整理文档 - 20243867孙堃2405
  • 算法第一章
  • mac打开app提示文件损坏解决方案
  • QBXT2025S刷题 Day7题
  • 无需重新训练即可更新语音识别词汇
  • 深入解析:vscode中无法使用npm node
  • 第一次算法作业
  • AI元人文:新的评价与启示
  • Ai元人文:岐金兰回应
  • Why is English commonly used in scientific literature?
  • 第二次课程
  • 考研系列—操作系统:冲刺笔记(1-3章) - 指南
  • 智能照明系统厂家最新推荐榜:智慧光控与节能方案口碑之选
  • 2025工业网线优质厂家最新推荐榜:品质卓越与技术领先之选
  • 上海殡葬一条龙服务最新推荐:专业关怀与人性化服务口碑之选
  • 中空扳手实力厂家最新推荐榜:专业制造与耐用品质深度解析
  • 驾驭“人造太阳”:用 AI 来解锁聚变核能
  • sg.Multiline 和 sg.Output 有什么区别?怎么看起来一样?
  • 中科微GNSS卫星定位产品
  • 算法设计与分析第一章作业
  • Syncfusion重构Essential Studio套件,为开发者提供更灵活选择
  • vmware workstation17pro安装vmtools
  • 2025 年逸发粘接认证推荐:依托德系标准与全链条服务,打造粘接及复材技术解决方案优质选择
  • ZR 2025 十一集训 Day 8
  • Prj09--8088单板机C语言8253产生1KHz方波(1) - 详解
  • 2025 年杭州画室推荐:之江画室凭央清班十年口碑、突出设计学录取案例及特色教学空间脱颖而出