




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验 10 Java的常用工具类实验目的 :(1) 了解 Java 的预定义类 ; (2) 学习使用 Java 的常用类 ; (3) 掌握方法覆盖的使用。实验任务 :在该实验中包含 3 个练习 , 分别是针对 Java 中的 Math 类 , 基本类型的包装类 , 日期类 Date 和 Calendar 以及动态数组 Vector 类 , 通过这些练习仔细体会这些常用的 Java 类的使用方法。实验步骤 :1. 练习 1 Math 类和基本类型的包装类在这个练习里 , 将练习使用 Math 类和基本类型的包装类 ,Math 类中包含有许多常用的数学方法如求绝对值 abs() 、正弦值 sin() 、两数当中的较大者 max(x, y), 而基本类型的包装类则允许将基本的数据类型包装成一个类 , 并访问其中的方法。程序的运行结果如图 7-3所示。(1) 请按程序清单1-10-1, 输入下面的 MathTest.java 源程序。程序清单1-10-1 MathTest.java/ MathTest.javaimport java.util.*;public class MathTest public static void main(String args) Scanner scanner = new Scanner(System.in); int intData; double doubleData; String intString, doubleString; System.out.print(请输入整数x和实数y: ); intData = scanner.nextInt( ); /以字符串方式输入实数 doubleString = scanner.next( ); /创建整数对象intObject Integer intObject = new Integer(intData); /返回字符串所对应的数值 doubleData = Double.parseDouble(doubleString); intData = intOValue( ); /将整数对象的值以字符串形式输出 intString = intObject.toString( ); System.out.println(你的输入是: + intString + , + doubleData); /开始调用Math类的方法进行运算 int intData1 = Math.abs(intData); System.out.println(abs(x)x的绝对值: +Math.abs(intData); System.out.println(ceil(y)y向上取整: +Math.ceil(doubleData); System.out.println(floor(y)y向下取整:+Math.floor(doubleData); System.out.println(exp(x)e的x次幂: + Math.exp(intData); System.out.println(log(x)x的自然对数:+ Math.log(intData1); System.out.println(max(x,y)x和y中的较大者:+ Math.max(intData,doubleData); System.out.println(min(x,y)x和y中的较小者:+ Math.min(intData,doubleData); System.out.println(sin(x)x的正弦值: + Math.sin(intData); System.out.println(cos(x)x的余弦值: + Math.cos(intData); System.out.println(以x为半径的圆面积:+ Math.PI*intData*intData);(2) 编辑 Birthday.java 程序并保存 , 然后在Eclipse 环境中编译运行它 ,观察程序运行结果。结果如下:思考(1) 请问程序中Math类中的方法为什么可以直接用类名来访问?答:因为Math的方法定义为静态类型的所以可以通过类名或者类的实例对象来访问!(2)请调用Math类的方法以产生一个随机数,然后求随机数的正弦值和余弦值。答:改源代码为:1. public class MathTest 2.3. public static void main(String args) 4.5. /Scanner scanner = new Scanner(System.in);6.7. int intData;8. double doubleData; 9. String intString, doubleString;10.11. System.out.print(请输入整数x和实数y: );12. intData=(int)(Math.random()*100);13. doubleData=Math.random()*100;14. /创建整数对象intObject15. Integer intObject = new Integer(intData);16. intData = intOValue( );17. /将整数对象的值以字符串形式输出18. intString = intObject.toString( );19. (部分代码省略)输出结果:2.练习2 日期类Date和Calendar在这个练习里用户将会学习使用Java中常用的操纵时间的类Date和Calendar以及控制日期输入输出格式的类DateFormat,程序会要求用户以规范的格式输入自己的生日日期,然后将使用Date类和Calendar类和Calendar类中的方法计算出用户的生日是星期几,用户的年龄以及出声的年份是否是闰年。(1) 请按程序清单1-10-2 输入下面的Birthday.java源程序。程序清单1-10-2 Birthday.javaimport java.util.*; / Date,Calendar,Scannerimport java.text.*; / SimpleDateFormatpublic class Birthday public static void main(String args) throws ParseException String birthday, dayOfWeek= ;Date date;Calendar calendar;Scanner scanner = new Scanner(System.in);System.out.println(请输入你的生日日期:yyyy-MM-dd);birthday = scanner.next( );/创建一个日期格式对象 SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd);/获得一个包含当前日期和时间的Calendar子类的实例 calendar = Calendar.getInstance();int currentYear = calendar.get(Calendar.YEAR);/按输入的birthday产生一个Date对象date = dateFormat.parse(birthday);/将date对象的值传递给calendar对象calendar.setTime(date); int days = calendar.get(Calendar.DAY_OF_WEEK); switch( days ) case 1: dayOfWeek = 星期日;break; case 2: dayOfWeek = 星期一;break; case 3: dayOfWeek = 星期二;break; case 4: dayOfWeek = 星期三;break; case 5: dayOfWeek = 星期四;break; case 6: dayOfWeek = 星期五;break; case 7: dayOfWeek = 星期六;break; System.out.println(你的生日是: + dayOfWeek);int birthYear = calendar.get(Calendar.YEAR);if (birthYear%4=0)&(birthYear%100!=0)|(birthYear%400=0) System.out.println(birthYear + 年: 是闰年); else System.out.println(birthYear + 年: 不是闰年); int age = currentYear-birthYear; System.out.println(你现在是: + age + 岁); (2) 编辑Birthday.java源程序并保存,然后在Eclipse 环境中编译运行它,观察程序运行结果。结果:思考(1) 请问程序Brithday.java中的语句 :SimpleDateFormat dateFormat=new SimpleDateFormat(yyyy-MM-dd);的作用是什么 , 请查询 DateFormat 类中是否还有其他的日期格式。答:SimpleDateFormat dateFormat=new SimpleDateFormat(yyyy-MM-dd);的作用是创建一个日期格式对象;DateFormat 类中其他的日期格式如下表:Date and Time Pattern Result yyyy.MM.dd G at HH:mm:ss z 2001.07.04 AD at 12:08:56 PDT EEE, MMM d, yy Wed, Jul 4, 01 h:mm a 12:08 PM hh oclock a, zzzz 12 oclock PM, Pacific Daylight Time K:mm a, z 0:08 PM, PDT yyyyy.MMMMM.dd GGG hh:mm aaa 02001.July.04 AD 12:08 PM EEE, d MMM yyyy HH:mm:ss Z Wed, 4 Jul 2001 12:08:56 -0700 yyMMddHHmmssZ 010704120856-0700 yyyy-MM-ddTHH:mm:ss.SSSZ 2001-07-04T12:08:56.235-0700 (1) 程序中的 switch 语句用于判断星期几 , 现在请将该 switch 语句中的 break 语句全部删除 , 然后编译运行程序 , 观察会有什么结果 , 并说明原因。答:输入不同的出生时间,生日输出结果都会是星期六。原因是switch语句中的没有break语句,就不能执行一次case后跳出switch语句,程序就会一直执行到switch最后的语句dayOfWeek = 星期六;。(2) 在输入了正确的生日日期后 , 程序能返回用户的年龄 , 现在请修改程序 , 以返回用户的生日日期与当前日期之间相距多少天。答:在switch语句后增加代码:long daysOfYear = Calendar.getInstance().getTimeInMillis()/86400000 - date.getTime()/86400000-1; /用立即数,减少乘法计算的开销以及在代码行System.out.println(你现在是: + age + 岁);后紧跟代码System.out.println(你的生日日期与当前日期之间相距+daysOfYear+天。);结果如下:(4) 请查询 Calendar 类的相关方法以显示出当前的精确日期和时间 ( 包括年、月、日、小时、分钟、秒 )。import java.util.*; / Date,Calendar,Scannerimport java.text.*; / SimpleDateFormat(省略部分代码)/获得一个包含当前日期和时间的Calendar子类的实例 calendar = Calendar.getInstance();int currentYear = calendar.get(Calendar.YEAR);int currentMonth = calendar.get(Calendar.MONTH)+1;int currentDayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);int currentHour = calendar.get(Calendar.HOUR);int currentMinute = calendar.get(Calendar.MINUTE);int currentSencond = calendar.get(Calendar.SECOND);/按输入的birthday产生一个Date对象date = dateFormat.parse(birthday);(省略部分代码) System.out.println(你现在是: + age + 岁); System.out.println(当前的精确时间是: +currentYear+年+ currentMonth+月+currentDayOfMonth+日+ currentHour+:+ currentMinute+:+currentSencond);3. 练习 3 动态数组 Vector 类在这个练习里 , 用户将练习使用 Vector 类 ,Vector 类是一个动态数组 , 能根据实际需要动态地扩充数组的大小 , 同时 Vector 类中还包含许多方法来操纵数组中的元素 , 程序中有一个 Vector 数组 , 里面包含有几个事先定义的城市名 , 同时 , 可以在该数组中增加几个新的城市名 , 并进行一些交互性的操作。在这一过程中 , 仔细体会 Vector 数组的用法。该程序的运行结果如图 7-5 所示。 请按程序清单 1-10-3 输入下面的 CityVector.java 源程序。程序清单 1-10-3 CityVector.java/ CityVector.javaimport java.util.*;public class CityVector static String city = 北京, 上海, 广州, 深圳 ; public CityVector( ) Vector vector = new Vector(6); Scanner scanner = new Scanner(System.in); String cityName; int index; for ( int i = 0; i city.length; i+ ) vector.add( cityi ); ; / 显示出数组信息 displayVector(vector); System.out.print(n请输入数组索引号: ); index = scanner.nextInt( ); cityName = (String)vector.get(index); System.out.println(数组+index+的元素值是: +cityName); System.out.print(n请再输入3个你喜欢的城市: ); for ( int i = 0; i 3; i+ ) cityName = scanner.next(); vector.add(cityName); displayVector(vector); System.out.print(n请输入一个你想查询的城市名: ); cityName = scanner.next( ); if ( vector.contains(cityName) ) System.out.println( 在数组中找到: +cityName+ 下标是: + vector.indexOf(cityName); else System.out.println( 在数组中没有找到: +cityName ); System.out.print(n请输入一个你想删除的城市名: ); cityName = scanner.next( ); vector.remove(cityName); System.out.println(cityName + 已被删除); displayVector(vector); public void displayVector( Vector vector ) System.out.println( n数组大小: + vector.size() + n数组容量: + vector.capacity() ); if ( vector.isEmpty() ) System.out.print( 数组为空 ); else System.out.print( 数组包含: ); Enumera
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作室设计与工作环境优化
- 工作中的时间管理与自律
- 工业设计与产品创新实践
- 工业设计创新与技术趋势
- 工业风餐厅装修设计思路
- 工作场所中的安全卫生规范
- 工厂企业火灾防范与应急处理
- 工程机械结构强度与稳定性研究
- 工程质量管理中的监理职责与实施策略
- 工程机械的故障诊断与维修
- 2024年贵州省公安厅招聘警务辅助人员笔试真题
- 2025届江苏炸无锡市锡山区七年级数学第二学期期末联考试题含解析
- 养老机构消防安全课件
- 主、被动防护网施工方案-图文
- GB/T 45565-2025锂离子电池编码规则
- 1、人教部编版二年级下册语文看拼音写词语(一类生字和书后词语)
- 2025年济南高新区九年级中考数学二模考试试题(含答案)
- 花椒库存收购协议书
- DB22-T2979-2019-基质沥青相似度检测红外光谱法-吉林省
- 《小王子绘本教学课件》
- 金华市皓升再生资源有限公司年回收拆解20万辆电动自行车生产线技改项目
评论
0/150
提交评论