类与对象基础实验(三)实验报告_第1页
类与对象基础实验(三)实验报告_第2页
类与对象基础实验(三)实验报告_第3页
类与对象基础实验(三)实验报告_第4页
类与对象基础实验(三)实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学城市学院实验报告课程名称面向对象程序设计实验项目名称类与对象基础实验(三)学生姓名专业班级学号一.实验目的和要求1.掌握大数处理与BigInteger类2.掌握时间处理Date类与SimpleDateFormat类、Calendar类3.掌握异常处理与Exception类二.实验内容1.编程实现:大整数的数值计算2.编程实现:用大整数求阶乘之和3.编程实现:计算两个日期的天数之差4.编程实现:计算生日信息5.编程实现:数字转换的异常处理三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1.编程实现:大整数的数值计算。编写一个Java应用程序,计算两个大整数的和、差、积和商,并计算一个大整数的因子个数。(部分源码参考讲义)请分析并回答以下问题:程序源码如下:importjava.math.*;classBigIntegerExample{publicstaticvoidmain(Stringargs[]){BigIntegern1=newBigInteger("987654321987654321987654321"),n2=newBigInteger("123456789123456789123456789"),result=null;result=n1.add(n2);//n1和n2做加法运算System.out.println("和:"+result.toString());result=n1.subtract(n2);//n1和n2做减法运算System.out.println("差:"+result.toString());result=n1.multiply(n2);//n1和n2做乘法运算System.out.println("积:"+result.toString());result=n1.divide(n2);//n1和n2做除法运算System.out.println("商:"+result.toString());BigIntegerm=newBigInteger("1968957"),COUNT=newBigInteger("0"),ONE=newBigInteger("1"),TWO=newBigInteger("2");System.out.println(m.toString()+"的因子有:");for(BigIntegeri=TWO;pareTo(m)<0;i=i.add(ONE)){if((n1.remainder(i).compareTo(BigInteger.ZERO))==0){COUNT=COUNT.add(ONE);System.out.print(""+i.toString());}}System.out.println("");System.out.println(m.toString()+"一共有"+COUNT.toString()+"个因子");}}请将运行结果截图:请比较BigInteger和long的主要区别,并简要说明BigInteger的主要用途。答:如果使用浮点型表示大整数,往往需要容忍精度的损失,但是运算速度相对快很多;而用BigInteger表示大整数则不会损失数据位,但是运算速度相对较慢2.编程实现:用大整数求阶乘之和。编写一个Java应用程序,用BigInteger计算1!+2!+3!+…+n!。要求n的值从键盘输入。请分析并回答以下问题:程序源码如下:importjava.util.*;importjava.math.BigInteger;publicclassBigIntegerFa{ publicstaticvoidmain(String[]args){ intn; BigIntegernum=BigInteger.ZERO; System.out.println("请输入整数n:"); Scannerscanner=newScanner(System.in); n=scanner.nextInt(); inti; for(i=1;i<=n;i++){ num=num.add(factorialBig(i)); } for(i=1;i<n;i++){ System.out.print(i+"!+"); } System.out.println(i+"!="+num); } publicstaticBigIntegerfactorialBig(intn){ BigIntegerresult=BigInteger.ONE; inti; for(i=1;i<=n;i++){ BigIntegerk=BigInteger.valueOf(i); result=result.multiply(k); } returnresult;}}请将运行结果截图:3.编程实现:计算两个日期的天数之差。编写Java应用程序,来计算任意两个日期的天数之差。要求:两个日期用字符串形式输入(比如输入“20100101”表示2010年1月1日),需要将日期字符串的年、月、日分别转换为数字形式。程序源码如下:importjava.text.SimpleDateFormat;importjava.util.*;publicclassDateSub{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请输入第一个日期,格式如20100310:"); Stringnum=scanner.nextLine(); Stringyear=num.substring(0,4); Stringmonth=num.substring(4,6); Stringday=num.substring(6); Calendarcalendar=Calendar.getInstance(); calendar.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); Datedate1=calendar.getTime(); System.out.println("请输入第二个日期,格式如20100310:"); num=scanner.nextLine(); year=num.substring(0,4); month=num.substring(4,6); day=num.substring(6); calendar.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); Datedate2=calendar.getTime(); longSubDay=(date1.getTime()-date2.getTime())/(24*60*60*1000); if(SubDay<0) SubDay=(date2.getTime()-date1.getTime())/(24*60*60*1000); System.out.println("两个日期之间相差"+SubDay+"天"); }}请将运行结果截图:4.编程实现:生日信息。编写Java应用程序,计算你的生日还有多少天,你的生日是星期几。程序源码如下:importjava.util.*;publicclassBirthDay{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请输入你的生日,格式形如:2007-09-21:"); Calendarcalendar=Calendar.getInstance(); Stringstr=scanner.nextLine(); Stringyear=str.substring(0,4); Stringmonth=str.substring(5,7); Stringday=str.substring(8); calendar.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); System.out.println("输出对应的是星期几:"); intweek=calendar.get(Calendar.DAY_OF_WEEK); switch(week) { case1:System.out.println("MONDAY");break; case2:System.out.println("TUESDAY");break; case3:System.out.println("WEDNSSDAY");break; case4:System.out.println("THESDAY");break; case5:System.out.println("FIRDAY");break; case6:System.out.println("SATUATFAY");break; default:System.out.println("SUNDAY");break; } Datedate2=newDate(); calendar.set(2012,Integer.parseInt(month),Integer.parseInt(day)); Datedate1=calendar.getTime(); longcountDay=(date1.getTime()-date2.getTime())/(24*60*60*1000);if(countDay<0){calendar.set(2013,Integer.parseInt(month),Integer.parseInt(day)); date1=calendar.getTime();countDay=(date1.getTime()-date2.getTime())/(24*60*60*1000);} System.out.println("距离你的生日还有"+countDay+"天。"); }}请将运行结果截图:5.编程实现:数字转换的异常处理。输入两个数,计算两个数想除的结果(考虑除数为0的异常情况)。程序源码如下:importjava.util.*;classDivide{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请输入两个数字:"); doublea=scanner.nextDouble(); doubleb=scanner.nextDouble(); try{ Syste

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论