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

# Java方法学习:动手动脑与课后实验整理

这两周学了Java方法相关内容,攒了不少练习题和实验作业,整理成博客记录一下,也方便以后复习的时候回看~

一、动手动脑小练习

  1. 自定义随机数生成器
    之前一直用Math.random()或者Random类生成随机数,这次老师要求用指定算法写一个:Modulus是2³¹-1,Multiplier是16807,C=0,公式是Xₙ₊₁=(aXₙ+c)mod m。核心就是循环套公式,不过得注意用long类型存中间值,不然容易溢出,最后再转成int。我写了个方法生成1000个随机数,跑了下没问题,也算搞懂了随机数背后的简单算法逻辑。

  2. 方法重载原来这么常见
    看老师给的MethodOverload代码才发现,同一个方法名能写两次——一个传int算整数平方,一个传double算小数平方。原来这就是方法重载,关键是参数列表得不一样(类型、个数或者顺序),返回值不算数。后来特意去看了System.out.println(),果然有一堆重载方法,能接收不同类型的参数,瞬间明白为啥打印啥都能用它了。

  3. 阶乘计算踩了“溢出”的坑
    用递归写n!的时候,算到13结果就成负数了,一开始还以为是递归逻辑错了。查了才知道int类型有范围,超过2147483647就会溢出,变成负数。换成long能算到20,但21又不行了。最后用了BigInteger类,不管多大的n都能算,就是得用.multiply()这种方法做乘法,不能直接用*,也算解锁了新类的用法。

  4. 浮点数比较别直接用
    之前直接用i
    j比较两个浮点数,结果0.0001和0.00010000000000000001居然返回true,当时懵了。后来才知道浮点数存的是近似值,double精度范围内这两个数是一样的。正确的做法是比较它们差的绝对值,比如小于1e-10就认为相等,这个细节以后肯定能用到,记下来免得再踩坑。

二、课后实验:小学四则运算程序
阶段1:快速生成30道题
要求二十分钟内写个能生成30道小学四则运算题的程序。我用Random类生成1-100的数字,随机选+、-、*、/四种运算符。减法的时候注意交换两个数,避免出现负数;除法让被除数是除数的倍数,确保能整除。循环30次输出题目,没花多久就搞定了,主要是把规则理清楚就行。

阶段2:升级成答题系统
这个比阶段1复杂点,要满足三个要求:题目不重复、实时答题判分、倒计时。我用HashSet存生成的题目,避免重复;乘法控制两个数在31以内,防止结果是四位数。用Scanner接收答案,和正确结果对比,统计对的和错的。还开了个线程做10分钟倒计时,超时没答完的题直接算错。最后能显示正确率,测试了几次流程都没问题,就是倒计时线程一开始没处理好标志位,调了一会儿才弄对。

三、小结
这次学习最大的感受就是,光看理论没用,动手写代码才会发现各种小问题——比如整数溢出、浮点数比较的坑。另外整理代码也很重要,把这些小例子存起来,以后遇到类似需求说不定能直接参考。继续加油,希望下次学新内容能少踩点坑~

http://www.hskmm.com/?act=detail&tid=26865

相关文章:

  • CF2155D Batteries
  • JAVA语法基础》动手动脑与实验问题全整理
  • 崩铁壁纸
  • PotPlayer 播放器
  • 10.8动手动孬
  • [迷宫寻路 Round 3] 七连击
  • 《程序员修炼之道:从小工到专家》阅读笔记
  • [笔记]树论笔记+做题记录
  • 云服务器部署大数据组件
  • 规模化网站SSL证书终极方案
  • 详细介绍:录制mp4
  • 10月8日
  • 【OpenGL ES】光栅化插值原理和射线拾取原理
  • HTML 速查列表 - 教程
  • Exp1
  • 20_uv_wsl_installation
  • 学习问题日记-4
  • Codeforces Round 1042 (CF2131) 补题笔记(A-E)
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名AI编程助手框架需求探索
  • 表格数据自动机器学习技术解析
  • 10/8
  • 2025.10.8
  • 【QT】QString 与QString区别 - 教程
  • 连通分量tarjan学习笔记
  • [Python/地图] 基于Python绘制地图
  • 实验任务1——8
  • 一款专门为 WPF 打造的开源 Office 风格用户界面控件库
  • dockercontainerd代理设置脚本
  • 实用指南:vue3+elementplus表格表头加图标及文字提示
  • 2025国庆集训总结