版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计语言概述8.5math和random类8.5math和random类
Math类是Java标准库中的一个工具类,提供了丰富的数学运算方法,用于执行基本和复杂的数学计算。这些方法包括三角函数、指数运算、对数运算、四舍五入等。Math类中的所有方法都是静态的,可以直接通过类名调用。
Random类是Java标准库中的一个工具类,用于生成随机数。它提供了生成随机整数、浮点数、布尔值等的方法。Random类在模拟、游戏开发、数据生成等场景中非常有用。01Random类01Math类的特点
Math类中的所有方法都是静态的,可以直接通过Math类名调用,而无需创建对象。Math类的方法是线程安全的,可以在多线程环境中安全使用。
Math类提供了两个常用的数学常量:Math.PI(圆周率π)和Math.E(自然对数的底数e)。静态方法常量线程安全02常用方法02常用方法
1.基本数学运算
绝对值:Math.abs(x),返回参数的绝对值。
最大值:Math.max(x,y),返回两个参数中的最大值。
最小值:Math.min(x,y),返回两个参数中的最小值。
四舍五入:Math.round(x),返回最接近参数的整数。
向上取整:Math.ceil(x),返回大于或等于参数的最小整数。
向下取整:Math.floor(x),返回小于或等于参数的最大整数。代码如下所示:intabsValue=Math.abs(-10);//10intmaxValue=Math.max(10,20);//20intminValue=Math.min(10,20);//10longroundedValue=Math.round(10.6);//11doubleceilValue=Math.ceil(10.1);//11.0doublefloorValue=Math.floor(10.9);//10.002常用方法
2.三角函数
正弦:Math.sin(x),返回参数的正弦值。
余弦:Math.cos(x),返回参数的余弦值。
正切:Math.tan(x),返回参数的正切值。
反正切:Math.atan(x),返回参数的反正切值。应用场景如下:doublesinValue=Math.sin(Math.PI/2);//1.0doublecosValue=Math.cos(0);//1.0doubletanValue=Math.tan(Math.PI/4);//1.0doubleatanValue=Math.atan(1);//0.7853981633974483(即π/4)02常用方法
3.指数和对数
指数:Math.exp(x),返回e的x次幂。
自然对数:Math.log(x),返回参数的自然对数。
以10为底的对数:Math.log10(x),返回参数的以10为底的对数。应用场景如下::doubleexpValue=Math.exp(1);//2.718281828459045doublelogValue=Math.log(Math.E);//1.0doublelog10Value=Math.log10(100);//2.002常用方法4.指数和对数幂运算:Math.pow(x,y),返回x的y次幂。平方根:Math.sqrt(x),返回参数的平方根。doublepowValue=Math.pow(2,3);//8.0doublesqrtValue=Math.sqrt(16);//4.05.随机数随机数:Math.random(),返回一个0到1之间的随机浮点数。doublerandomValue=Math.random();//例如:0.12345678903Random类的特点04常用方法04常用方法
1.生成随机整数
无界随机整数:nextInt(),生成一个随机整数,范围是Integer.MIN_VALUE到Integer.MAX_VALUE。
有界随机整数:nextInt(intbound),生成一个随机整数,范围是0到bound-1。使用方式如下所示:importjava.util.Random;publicclassRandomExample{publicstaticvoidmain(String[]args){Randomrandom=newRandom();intrandomInt=random.nextInt();//生成一个无界的随机整数System.out.println("无界随机整数:"+randomInt);intrandomIntBound=random.nextInt(100);//生成一个0到99之间的随机整数System.out.println("有界随机整数(0到99):"+randomIntBound);}}04常用方法
2.生成随机浮点数
随机浮点数:nextDouble(),生成一个0到1之间的随机浮点数。
随机浮点数(指定范围):通过简单的数学运算可以生成指定范围的随机浮点数。示例代码如下:importjava.util.Random;publicclassRandomExample{publicstaticvoidmain(String[]args){Randomrandom=newRandom();doublerandomDouble=random.nextDouble();//生成一个0到1之间的随机浮点数System.out.println("随机浮点数(0到1):"+randomDouble);doublerandomDoubleRange=50+random.nextDouble()*50;//生成一个50到100之间的随机浮点数System.out.println("随机浮点数(50到100):"+randomDoubleRange);}}04常用方法3.生成随机布尔值随机布尔值:nextBoolean(),生成一个随机布尔值。例如:importjava.util.Random;publicclassRandomExample{publicstaticvoidmain(String[]args){Randomrandom=newRandom();booleanrandomBoolean=random.nextBoolean();//生成一个随机布尔值System.out.println("随机布尔值:"+randomBoolean);}}04常用方法4.生成随机字节数组随机字节数组:实用nextBytes(byte[]bytes),生成一个随机字节数组:publicclassRandomExample{publicstaticvoidmain(String[]args){Randomrandom=newRandom();byte[]randomBytes=newbyte[10];random.nextBytes(randomBytes);//填充随机字节数组System.out.print("随机字节数组:");for(byteb:randomBytes){System.out.print(b+"");}}}05设置种子值05设置种子值
可以通过构造器Random(longseed)设置种子值,相同的种子值会生成相同的随机数序列。应用代码如下:importjava.util.Random;publicclassRandomExample{publicstaticvoidmain(String[]args){Randomrandom1=newRandom(12345L);Randomrandom2=newRandom(12345L);System.out.println("随机数1:"+random1.nextInt(100));//输出:随机数1:75System.out.println("随机数2:"+random2.nextInt(100));//输出:随机数2:75}}06项目演练04项目演练项目名称:智能健康助手场景设计:这是一个命令行应用程序,用于帮助用户管理健康数据,包括体重、身高、运动记录等。系统支持以下功能:1.用户注册:输入基本信息(姓名、年龄、身高、体重等)。2.BMI计算:根据用户的身高和体重计算BMI(身体质量指数)。3.运动记录:用户可以记录每天的运动时间(分钟)和运动类型(如跑步、游泳等)。4.健康建议:根据BMI和运动记录,系统提供个性化的健康建议。5.历史记录查询:用户可以查看自己的历史运动记录和BMI变化。6.退出系统:退出程序。04项目演练项目结构:HealthAssistant/├──src/│
├──Main.java//主入口│
├──User.java//用户类│
├──HealthManager.java//健康管理类│
├──ExerciseRecord.java//运动记录类│
├──Util.java//工具类(包含随机数生成、日期计算等)├──README.md//项目说明文档└──run04项目演练1.定义User类importjava.time.LocalDate;publicclassUser{privateStringname;privateintage;privatedoubleheight;//身高(米)privatedoubleweight;//体重(千克)privateLocalDateregistrationDate;privateArrayList<ExerciseRecord>exerciseRecords;publicUser(Stringname,intage,doubleheight,doubleweight){=name;this.age=age;this.height=height;this.weight=weight;this.registrationDate=LocalDate.now();this.exerciseRecords=newArrayList<>();}publicStringgetName(){returnname;}publicintgetAge(){returnage;}publicdoublegetHeight(){returnheight;}publicdoublegetWeight(){returnweight;}04项目演练publicLocalDategetRegistrationDate(){returnregistrationDate;}publicdoublecalculateBMI(){returnweight/(height*height);}publicvoidaddExerciseRecord(ExerciseRecordrecord){exerciseRecords.add(record);}publicArrayList<ExerciseRecord>getExerciseRecords(){returnexerciseRecords;}@OverridepublicStringtoString(){return"姓名:"+name+",年龄:"+age+",身高:"+height+"米,体重:"+weight+"千克";}}04项目演练importjava.time.LocalDate;publicclassExerciseRecord{privateLocalDatedate;privateStringexerciseType;privateintduration;//运动时间(分钟)publicExerciseRecord(LocalDatedate,StringexerciseType,intduration){this.date=date;this.exerciseType=exerciseType;this.duration=duration;}publicLocalDategetDate(){returndate;}2.实现ExerciseRecord类publicStringgetExerciseType(){returnexerciseType;}publicintgetDuration(){returnduration;}@OverridepublicStringtoString(){return"日期:"+date+",运动类型:"+exerciseType+",持续时间:"+duration+"分钟";}}04项目演练importjava.time.LocalDate;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;publicclassHealthManager{privateList<User>users=newArrayList<>();privateScannerscanner=newScanner(System.in);publicvoidregisterUser(){System.out.print("请输入您的姓名:");Stringname=scanner.nextLine();System.out.print("请输入您的年龄:");intage=scanner.nextInt();scanner.nextLine();//清除缓冲区System.out.print("请输入您的身高(米):");doubleheight=scanner.nextDouble();scanner.nextLine();//清除缓冲区System.out.print("请输入您的体重(千克):");doubleweight=scanner.nextDouble();scanner.nextLine();//清除缓冲区Useruser=newUser(name,age,height,weight);users.add(user);System.out.println("注册成功!");}publicvoiddisplayUsers(){if(users.isEmpty()){System.out.println("暂无用户信息!");return;}for(Useruser:users){System.out.println(user);System.out.println("BMI:"+user.calculateBMI());}}3.定义HealthManager类04项目演练publicvoidrecordExercise(){if(users.isEmpty()){System.out.println("暂无用户信息!");return;}System.out.print("请输入您的姓名:");Stringname=scanner.nextLine();Useruser=users.stream().filter(u->u.getName().equals(name)).findFirst().orElse(null);if(user==null){System.out.println("未找到用户!");return;}publicvoidrecordExercise(){if(users.isEmpty()){System.out.println("暂无用户信息!");return;}System.out.print("请输入您的姓名:");Stringname=scanner.nextLine();Useruser=users.stream().filter(u->u.getName().equals(name)).findFirst().orElse(null);if(user==null){System.out.println("未找到用户!");return;}3.定义HealthManager类04项目演练publicvoidprovideHealthAdvice(){if(users.isEmpty()){System.out.println("暂无用户信息!");return;}for(Useruser:users){doublebmi=user.calculateBMI();System.out.println(user);System.out.println("BMI:"+bmi);if(bmi<18.5){System.out.println("建议:您的体重过轻,建议增加营养摄入。");}elseif(bmi>=18.5&&bmi<24.9){System.out.println("建议:您的体重正常,继续保持健康的生活方式。");}else{System.out.println("建议:您的体重过重,建议增加运动量,控制饮食。");}}}publicvoidshowExerciseHistory(){if(users.isEmpty()){System.out.println("暂无用户信息!");return;}System.out.print("请输入您的姓名:");Stringname=scanner.nextLine();Useruser=users.stream().filter(u->u.getName().equals(name)).findFirst().orElse(null);if(user==null){System.out.println("未找到用户!");return;}3.定义HealthManager类04项目演练System.out.println("运动历史记录:");for(ExerciseRecordrecord:user.getExerciseRecords()){System.out.println(record);}}publicvoidshowMenu(){System.out.println("欢迎使用智能健康助手!");System.out.println("1.注册新用户");System.out.println("2.显示所有用户信息");System.out.println("3.记录运动");System.out.println("4.提供健康建议");System.out.println("5.查看运动历史记录");System.out.println("6.退出系统");}publicvoidrun(){while(true){showMenu();System.out.print("请选择操作:");intchoice=scanner.nextInt();scanner.nextLine();//清除缓冲区switch(choice){case1:registerUser();break;case2:displayUsers();break;case3:recordExercise();break;3.定义HealthManager类04项目演练System.out.println("运动历史记录:");for(ExerciseRecordrecord:user.getExerciseRecords()){System.out.println(record);}}publicvoidshowMenu(){System.out.println("欢迎使用智能健康助手!");System.out.println("1.注册新用户");System.out.println("2.显示所有用户信息");System.out.println("3.记录运动");System.out.println("4.提供健康建议");System.out.println("5.查看运动历史记录");System.out.println("6.退出系统");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中综合实践活动七年级全册教学设计教案
- CN119407605A 一种适用于多规格薄壁零件夹持检测方法以及装置 (纽威数控装备(苏州)股份有限公司)
- CN119407105A 一种大型模具快速加工装置及其加工方法 (上海通领汽车科技股份有限公司)
- 预拌混凝土数字化管控实施方案
- 工厂供应链数字化运营管理课件
- 建筑工程变更签证处理手册
- 管道安装现场施工设计
- 中建建筑及装饰设计管理优化培训
- 企业职业健康防护知识宣贯培训课件
- 屋面工程施工监理实施细则
- 造价工程师识图算量课件
- 冷轧高性能取向电工钢带-编制说明-
- DZ/T 0223-2011矿山地质环境保护与恢复治理方案编制规范
- 集成电路布图设计委托开发合同
- 装修隔音合同协议
- 砌筑工考试试题及答案
- 店面租赁订金合同范例
- 高职高专建筑材料与检测课件第二章
- 机电总承包管理方案超算中心
- 粉尘防爆知识培训试题
- 2023年全国研究生考试英语二真题及详细答案
评论
0/150
提交评论