课后 10.8

news/2025/10/8 16:46:14/文章来源:https://www.cnblogs.com/Ceoberus/p/19129805

import java.util.Random;
import java.util.Scanner;
import java.util.HashSet;
import java.util.Timer;
import java.util.TimerTask;

public class Math {
private static HashSet questionSet = new HashSet<>();
private static int total = 0;
private static int correct = 0;
private static int wrong = 0;
private static boolean isTimeUp = false;
private static int timeLimit;

public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入答题时间(秒):");timeLimit = sc.nextInt();startCountdown();makeQuestion();showResult();sc.close();
}
private static void startCountdown() {Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {public void run() {if (timeLimit <= 0) {isTimeUp = true;System.out.println("\n时间到!");timer.cancel();} else if (timeLimit <= 10) { // 最后10秒提醒System.out.println("剩余时间:" + timeLimit + "秒");}timeLimit--;}}, 0, 1000);
}
private static void showResult() {System.out.println("\n===== 答题结果 =====");System.out.println("总题数:" + total);System.out.println("做对:" + correct);System.out.println("做错:" + wrong);if (total > 0) {System.out.println("正确率:" + (correct * 100.0 / total) + "%");}
}
public static void makeQuestion() {for (int i = 0; i < 30 && !isTimeUp; i++) {Random num = new Random();int end = 0;char op=' ';boolean check=false;int num1 = num.nextInt(100);int num2 = num.nextInt(100);int num_meddle = num.nextInt(4);switch (num_meddle) {case 0:end = num1 + num2;op = '+';break;case 1:end = num1 - num2;op = '-';break;case 2:end = num1 * num2;op = '*';break;case 3:end = num1 / num2;op = '/';break;}// 检查题目有效性和重复性check = checkQuestion(num1, num2, op);String question = num1 + "" + op + "" + num2 + "=";// 如果题目无效或重复,重新生成if (!check || questionSet.contains(question) || isTimeUp) {i--;continue;}// 除法需要重新计算正确结果if (op == '/') {end = num1 / num2;}// 记录已出现的题目questionSet.add(question);total++;// 显示题目并处理答题System.out.print(question);if (isTimeUp) {wrong++;continue;}// 处理答题结果if (answerQuestion(end)) {correct++;System.out.println("正确");} else {wrong++;System.out.println("错误,正确答案是:" + end);}}
}
public static boolean answerQuestion(int end) {if (isTimeUp) return false;Scanner input = new Scanner(System.in);try {int answer = input.nextInt();return answer == end;} catch (Exception e) {return false;}
}
public static boolean checkQuestion(int num1, int num2, char op) {switch (op) {case '-':return num1 >= num2;case '*':return num1 * num2 < 1000;case '/':return num2 != 0 && num1 % num2 == 0;default: // '+'return true;}
}

}

学完这节 Java 方法课,最大的感受是之前对 “方法” 的理解太浅了 —— 原来它不只是写个函数那么简单,而是像 PPT 里说的 “懒人造就方法”,把复杂问题拆成小块、重复利用。比如百万行代码分模块那例子,以前总觉得把代码堆在一起也能跑,直到自己试着写一个小工具时,把所有逻辑塞在 main 方法里,后来想改个答题计时功能,差点把整个代码搅乱,这才真正懂了模块化的意义:把计时、出题、判题拆成独立方法后,改其中一个功能时,其他部分完全不受影响,维护起来特别清爽。
还有处理大数字和浮点数的坑,印象特别深。之前算 20 的阶乘,用 int 类型结果变成了负数,换成 long 类型后,算到 30 的阶乘又不对了,翻 PPT 才想起 “类型有范围限制”,赶紧换成 BigInteger,看着控制台输出一长串正确的数字,才真正意识到基础类型的边界不是摆设。浮点数的坑也踩过,一开始用 == 比较 0.1+0.2 和 0.3,结果输出 false,当时还以为是代码写错了,后来按 PPT 里说的 “比差值绝对值”,用 Math.abs ((0.1+0.2)-0.3) < 1e-10 来判断,才得到正确结果,这些细节在课本上看时没太在意,实际写代码时却很容易掉进去
最后做四则运算的作业时,才算把零散的知识点串了起来:用 Random 类生成数字时,一开始没考虑除法要整除,后来加了判断 “num1 % num2 == 0”;遇到重复题目时,想起 HashSet 不存重复元素,就用它来记录已出的题目;还试着用方法重载写了两个判题方法,一个判整数答案,一个判浮点数答案(虽然最后作业没用到浮点数,但也算练了手)。做完后把随机数生成、题目合法性校验的方法整理到一个工具类里,下次同学要做类似作业时,直接把这个类发给他,他改改参数就能用,这才体会到整理代码仓库的必要 —— 不是为了 “存着”,而是下次遇到类似问题时,不用从头写起,效率能高很多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931724.shtml

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

相关文章

中国互联网协会官方网站达州 网站建设

1、什么是包 #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module names” 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 #具体的&#xff1a;包就是一个包含有__init__.py文件的文件夹&#xff0c;所以其实我…

实用指南:vue3+elementplus表格表头加图标及文字提示

实用指南:vue3+elementplus表格表头加图标及文字提示pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

菏泽做网站的宁乡市住房和城乡建设局网站

本文通过config server连接git仓库来实现配置中心&#xff0c;除了git还可以使用svn或者系统本地目录都行。引入依赖<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artif…

9.29课后整理 - GENGAR

课程中主要完成一下内容。 1.分析方法重载代码特性:观察给定的MethodOverload类代码,明确其展示的“方法重载”特性,并查看JDK中System.out.println()方法,总结重载规律。 2.比较递归与递推实现阶乘:先用递归方法…

深入解析:【QT】`QTextCursor::insertText()`中插入彩色文本

深入解析:【QT】`QTextCursor::insertText()`中插入彩色文本pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

Java方法专题 - 动手动脑问题与实验总结

一、随机数生成相关实验 动手动脑1:纯随机数发生器实现 问题要求: 编写一个方法,使用线性同余算法生成指定数目(比如1000个)的随机整数。 算法参数:Modulus = 2 - 1 = int.MaxValue Multiplier = 7⁵ = 16807 C …

2025年中盘点

工作近况 转组有半年了,好久没来写东西了。 第一个产品被reorg了,我的第一份工作在的第一个岗位就戛然而止了。诚实来讲第一个组还是不错的。WLB顶级,领导信任,同事们鼎力配合,这完全是what my dream company sho…

学习问题日记-3

在学习Docker过程中,在linux上安装docker的时候,为了进行docker仓库换源,执行了以下命令之后遇到了一个报错。 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo y…

怎么用dw英文版做网站wordpress新增文章小工具

近几年&#xff0c;随着大数据和人工智能技术的发展&#xff0c;智能化、程序化营销在国内获得高速发展。从以创意内容、提升效率的工具到现在驱动企业数字化转型的智能营销&#xff0c;营销云在国内的热度与成熟度不断提升。营销云起源于“Enterprise Marketing Software Suit…

商城网站建站方案汕头 做网站

京准电钟&#xff5c;基于纳秒级的GPS北斗卫星授时服务器 京准电钟&#xff5c;基于纳秒级的GPS北斗卫星授时服务器 你有没有思考过这样一个问题&#xff1a;火车站内&#xff0c;熙熙攘攘&#xff0c;旅客排队进站、列车停靠发车&#xff0c;一切井然有序。一旦有个别时间出现…

企业网站建设网站优化网站跳出

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Web开发】CSS教学(超详细,满满的干货) &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 CSS一. 什么是CSS?1.1 基本语法规范1.2 引入方式1.3 规范 二. CSS选…

【CVE-2025-4123】Grafana完整分析SSRF和从xss到帐户接管 - 教程

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

差分约束乘法改加减

洛谷P4926 [1007] 倍杀测量者#include<bits/stdc++.h> using namespace std; const int N=1010; const double INF=1e18; const double eps=1e-7; struct node{int v;double k;int tp; }; vector<node> ed…

01-方法-课后作业

Demo:MethodOverLoad展示了相同名称不同参数类型的方法,也叫做方法重载,在程序调用方法时会按照参数的类型而选择相应符合的方法。

域名建设好了怎么在建设网站创意设计图片素材

目录 一、Elasticsearch是什么&#xff1f; 二、为什么要使用ElasticSearch 2.1 关系型数据库有什么问题&#xff1f; 2.2 ElasticSearch有什么优势&#xff1f; 2.3 ES使用场景 三、ElasticSearch概念、原理与实现 3.1 搜索引擎原理 3.2 Lucene 倒排索引核心原理 倒排…

应用程序io接口

字符设备接口 字符设备只数据的存取和传输时以字符为单位的设备,比如键盘打印机,基本都是传输肃立比较低,不可寻址,并且在io时候,通常采取中断驱动的方式 块设备接口 块设备时至数据的存取和传输时以数据库为单位…

凡客网站登陆深圳工业设计培训班

转载自 如何设计一个高可用的运营系统 这是一篇来自粉丝的投稿&#xff0c;作者【林湾村龙猫】近一年在做关于运营活动方面的设计。本文是他的关于运营活动的总结&#xff0c;Hollis做了一点点修改。 概述 一个产品业务的发展总是离不开运营二字。随着业务快速的发展以及新…

深圳自助网站建设做网站的程序

在学习之前,一直以为WebService就是一个工具,在两个服务器之间建立一个通信,帮我们把需要传输的数据组织成规范的XML数据并发送到目的地,实际情况也确实是这样的,不过更高级一点的是,XFire不但可以帮我们生成XML发送,而且可以在接收了xml之后还可以直接返回对象给我们用…

【学习记录】Django Channels + WebSocket 异步推流编写常用命令汇总

【学习记录】Django Channels + WebSocket 异步推流编写常用命令汇总pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

边缘数据库近期想法(2)

近期读的这几篇论文主要是两种:对于边缘网络一些事务处理或的系统架构,其中关键在于协议的设计:边缘服务器上可扩展的数据管理、在无服务器的边缘网络架构可靠交易 一些大众研究内容适应性部署在边缘网络中以此提高…