七~八章实验指导.doc_第1页
七~八章实验指导.doc_第2页
七~八章实验指导.doc_第3页
七~八章实验指导.doc_第4页
七~八章实验指导.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

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

文档简介

第7章 常用实用类实验1 比较日期的大小1实验目的:本实验的目的是让学生掌握Date类和Calendar类的常用方法。2实验要求:编写一个Java应用程序,用户从键盘输入两个日期,程序将判断两个日期的大小关系以及两个日期之间的间隔天数。3程序模板: 按模板要求,将【代码1】【代码8】替换为Java程序代码。DateExample.javaimport java.util.*;public class DateExample public static void main(String args ) Scanner read=new Scanner(System.in); System.out.println(输入第一个日期的年份:); int yearOne=read.nextInt( ); System.out.println(输入该年的月份:); int monthOne=read.nextInt( ); System.out.println(输入该月份的日期:); int dayOne=read.nextInt( ); System.out.println(输入第二个日期的年份:); int yearTwo=read.nextInt( ); System.out.println(输入该年的月份:); int monthTwo=read.nextInt( ); System.out.println(输入该月份的日期:); int dayTwo=read.nextInt( ); Calendar calendar=Calendar.getInstance(); /初始化日历对象 calendar.set(yearOne,monthOne,dayOne); / 将calendar的时间设置为yearOne年monthOne月dayOne日 long timeOne= calendar.getTimeInMillis(); / calendar表示的时间转换成毫秒 calendar.set(yearTwo,monthTwo,dayTwo); / 将calendar的时间设置为yearTwo年monthTwo月dayTwo日 long timeTwo= calendar.getTimeInMillis(); / calendar表示的时间转换成毫秒 Date date1= new Date(timeOne); / 用timeOne作为参数构造date1 Date date2=new Date(timeTwo); / 用timeTwo作为参数构造date2 if(date2.equals(date1) System.out.println(两个日期的年、月、日完全相同); else if(date2.after(date1) System.out.println(您输入的第二个日期大于第一个日期); else if(date2.before(date1) System.out.println(您输入的第二个日期小于第一个日期); long 相隔天数= Math.abs(timeOne-timeTwo)/(24*60*60*1000); / 计算两个日期相隔天数 System.out.printf(%d年%d月%d日和%d年%d月%d日相隔%d天,yearOne,monthOne,dayOne, yearTwo,monthTwo,dayTwo, 相隔天数); 4实验指导与检查:向指导老师演示程序的运行效果。5实验报告:实验报告的格式如下(可要求学生填写并由实验指导老师签字):学号: 089074131 班级: 计084 姓名: 吴姚进 时间: 2010-10-20 实 验 内 容回 答老 师 评 语Calendar对象可以将时间设置到年、月、日、时、分、秒。请改进上面的程序,使用户输入的两个日期包括时、分、秒修改后的代码:如下(1)根据本程序中的一些知识,编写一个计算利息(按天计息)的程序,存款的数目和起止时间从键盘输入修改代码:如下(2)修改后的代码:(1) import java.util.*;public class DateExample public static void main(String arg) Scanner read=new Scanner(System.in); System.out.println(输入第一个日期的年份:); int yearOne=read.nextInt(); System.out.println(输入该年的月份:); int monthOne=read.nextInt(); System.out.println(输入该月份的日期:); int dayOne=read.nextInt(); System.out.println(输入该日期的小时:); int hourOne=read.nextInt(); System.out.println(输入该日期的分钟:); int minuteOne=read.nextInt(); System.out.println(输入该日期的秒:); int secondOne=read.nextInt(); System.out.println(输入第二个日期的年份:); int yearTwo=read.nextInt(); System.out.println(输入该年的月份:); int monthTwo=read.nextInt(); System.out.println(输入该月份的日期:); int dayTwo=read.nextInt(); System.out.println(输入该日期的小时:); int hourTwo=read.nextInt(); System.out.println(输入该日期的分钟:); int minuteTwo=read.nextInt(); System.out.println(输入该日期的秒:); int secondTwo=read.nextInt(); Calendar calendar=Calendar.getInstance(); calendar.set(yearOne,monthOne,dayOne,hourOne,minuteOne,secondOne); long timeOne=calendar.getTimeInMillis(); calendar.set(yearTwo,monthTwo,dayTwo,hourTwo,minuteTwo,secondTwo); long timeTwo=calendar.getTimeInMillis(); Date date1=new Date(timeOne); Date date2=new Date(timeTwo); if(date2.equals(date1) System.out.println(两个日期的年、月、日完全相同); else if(date2.after(date1) System.out.println(您输入的第二个日期大于第一个日期); else if(date2.before(date1) System.out.println(您输入的第二个日期小于第一个日期); long 相隔天数=Math.abs(timeOne-timeTwo)/(24*60*60*1000);System.out.printf(%d年%d月%d日%d时%d分%d秒和%d年%d月%d日%d时%d分%d秒相隔%d天,yearOne,monthOne,dayOne,hourOne,minuteOne,secondOne,yearTwo,monthTwo,dayTwo,hourTwo,minuteTwo,secondTwo,相隔天数); 运行结果:(2) import java.util.*;public class DateExample public static void main(String arg) Scanner read=new Scanner(System.in); System.out.println(输入存款金额:(元)); float money=read.nextFloat(); System.out.println(存款起始信息:); System.out.println(输入日期的年份:); int beginYear=read.nextInt(); System.out.println(输入该年的月份:); int beginMonth=read.nextInt(); System.out.println(输入该月份的日期:); int beginDay=read.nextInt(); System.out.println(输入该日期的小时:); int beginHour=read.nextInt(); System.out.println(输入该日期的分钟:); int beginMinute=read.nextInt(); System.out.println(输入该日期的秒:); int beginSecond=read.nextInt(); System.out.println(存款截止信息:); System.out.println(输入日期的年份:); int finalYear=read.nextInt(); System.out.println(输入该年的月份:); int finalMonth=read.nextInt(); System.out.println(输入该月份的日期:); int finalDay=read.nextInt(); System.out.println(输入该日期的小时:); int finalHour=read.nextInt(); System.out.println(输入该日期的分钟:); int finalMinute=read.nextInt(); System.out.println(输入该日期的秒:); int finalSecond=read.nextInt(); System.out.println(输入存款利率:); float percent=read.nextFloat(); Calendar calendar=Calendar.getInstance(); calendar.set(beginYear,beginMonth,beginDay,beginHour,beginMinute,beginSecond); long beginTime=calendar.getTimeInMillis(); calendar.set(finalYear,finalMonth,finalDay,finalHour,finalMinute,finalSecond); long finalTime=calendar.getTimeInMillis(); Date beginDate=new Date(beginTime); Date finalDate=new Date(finalTime); long 存款天数=Math.abs(beginTime-finalTime)/(24*60*60*1000); System.out.printf(存款金额:%f(元)n,money); System.out.printf(存款开始于:%d年%d月%d日%d时%d分%d秒n,beginYear,beginMonth,beginDay,beginHour,beginMinute,beginSecond); System.out.printf(存款截止于:%d年%d月%d日%d时%d分%d秒n,finalYear,finalMonth,finalDay,finalHour,finalMinute,finalSecond); System.out.printf(存款利率:%fn,percent); System.out.printf(存款天数:%dn,存款天数); System.out.printf(存款所获得的利息为:%fn(元),存款天数*percent*money); 运行结果: 实验2 随机布雷1实验目的:本实验的目的是让学生掌握LinkedList类的常用方法。2实验要求:首先编写一个Block类,Block对象具有String类型和boolean类型的成员变量,Block对象可以使用setName(String)方法、getName()方法、isMine()、setBlooean(boolean)方法来设置对象的名字、返回对象的名字,返回对象的boolean类型成员的值、设置对象的boolean类型成员的值。在主类中,要求用一个Block类型二维数组模拟88的方阵,即二维数组的每个单元是一个Block对象,然后将二维数组的各个单元中的对象存放到一个链表中。要求在88的方阵中随机布雷25个。3程序模板: 按模板要求,将【代码1】【代码9】替换为Java程序代码。MineExample.javaimport java.util.*;class Block String name; boolean boo=false; public void setName(String name) =name; / 将参数name传值给成员变量 public String getName() return name;/ 返回成员变量name boolean isMine() return boo;/ 返回成员变量boo public void setBoolean(boolean boo) this.boo=boo;/ 将参数boo传值给成员变量boo public class MineExample public static void main(String args) int mine=25; Block block=new Block88; for(int i=0;i8;i+) for(int j=0;j8;j+) blockij=new Block(); LinkedListlist=new LinkedList(); / 创建list for(int i=0;i8;i+) for(int j=0;j=0)/64个节点,删了26个 int size=list.size();/ 返回list中节点个数 int randomIndex=(int)(Math.random()*size); Block b=list.get(randomIndex); / 返回list中索引值为randomIndex的节点中的对象 b.setName(); b.setBoolean(true); list.remove(randomIndex);/ list删除索引值为randomIndex的节点 mine-; for(int i=0;i8;i+) for(int j=0;j8;j+) if(blockij.isMine() else int mineNumber=0; for(int k=Math.max(i-1,0);k=Math.min(i+7,7);k+) for(int t=Math.max(j-1,0);t=Math.min(j+1,7);t+) if(blockkt.isMine() mineNumber+; blockij.setName(+mineNumber); for(int i=0;i8;i+) for(int j=0;j8;j+) System.out.printf(%2s,blockij.getName(); System.out.printf(%n); 4实验指导与检查:向指导老师演示程序的运行效果。 5实验报告:实验报告的格式如下(可要求学生填写并由实验指导老师签字): 学号: 089074131 班级: 计084 姓名: 吴姚进 时间: 2010-10-22 实 验 内 容回 答老 师 评 语请编写一个应用程序,用一个二维数组模拟44方阵,然后将整数18随机放入方阵中,要求18中的每个数在方阵中恰好出现两次提示:首先将18添加到链表中,使得链表的长度为16,如链表的前八个节点中的数据是1,2,3,4,5,6,7,8,后八个节点中的数据也是1,2,3,4,5,6,7,8,然后随机删除链表中的节点,同时将该节点中的数据顺序放入方阵中代码和运行结果如下代码:import java.util.*;class Block int n; boolean boo=false; public void setN(int n) this.n=n; / 将参数n传值给成员变量 public int getN() return n;/ 返回成员变量n boolean isMine() return boo;/ 返回成员变量boo public void setBoolean(boolean boo) this.boo=boo;/ 将参数boo传值给成员变量boo public class MineExample public static void main(String args) Block block=new Block44;/建立一个4*4的方阵 for(int i=0;i4;i+) for(int j=0;j4;j+) blockij=new Block(); LinkedListlist=new LinkedList(); / 创建list for(int i=0;i4;i+) for(int j=0;j4;j+) list.add(blockij); /将blockij添加到list int size=list.size(); for(int i=1;i=8;i+)/建立链表 Block b=list.get(i-1); b.setN(i); b.setBoolean(true); for(int i=1;i=8;i+) Block b=list.get(i+7); b.setN(i); b.setBoolean(true); for(int i=0;i4;i+) for(int j=0;j4;j+) int randomIndex=(int)(Math.random()*size); Block b=list.get(randomIndex); blockij=b; list.remove(randomIndex); size-; for(int i=0;i4;i+) for(int j=0;j4;j+) System.out.printf(%2s,blockij.getN(); System.out.printf(%n); 两次运行结果:实验3 使用TreeSet排序1实验目的:本实验的目的是让学生掌握TreeSet类的使用。2实验要求:编写一个Java应用程序,用户从键盘输入5个学生的姓名和分数,按成绩排序输出学生的姓名和分数。3程序模板: 按模板要求,将【代码1】【代码4】替换为Java程序代码。TreeSetExample.javaimport java.util.*;public class TreeSetExample public static void main(String args) TreeSetmytree=new TreeSet(); for(int i=0;i5;i+) Scanner read=new Scanner(System.in); System.out.println(学生的姓名:); String name=read.nextLine(); System.out.println(输入分数(整数):); int score=read.nextInt(); Student stu=new Student(score,name); mytree.add(stu);/ 向mytree添加Student对象 System.out.println(学生的姓名和分数:); Iteratorte=mytree.iterator();/ mytree返回Iterator对象 while(te.hasNext()/ 判断te中是否存在元素 Student stu=te.next();/ 返回te中的下一个元素 System.out.println(++ +stu.english); class Student implements Comparable int english=0; String name; Student(int e,String n) english=e; name=n; public int compareTo(Object b) Student st=(Student)b; return(this.english-st.english); 4实验指导与检查:向指导老师演示程序的运行效果。5实验报告:实验报告的格式如下(可要求学生填写并由实验指导老师签字):学号: 089074131 班级: 计084 姓名: 吴姚进 时间: 2010-10-20 实 验 内 容回 答老 师 评 语请改写代码,要求按成绩从高到低输出学生的姓名和成绩修改如下修改后的代码:import java.util.*;public class TreeSetExample public static void main(String args) TreeSetmytree=new TreeSet(); for(int i=0;i5;i+) Scanner read=new Scanner(System.in); System.out.println(学生的姓名:); String name=read.nextLine(); System.out.println(输入分数(整数):); int score=read.nextInt(); Student stu=new Student(score,name); mytree.add(stu);/ 向mytree添加Student对象 System.out.println(学生的姓名和分数:); Iteratorte=mytree.iterator();/ mytree返回Iterator对象 while(te.hasNext()/ 判断te中是否存在元素 Student stu=te.next();/ 返回te中的下一个元素 System.out.println(++ +stu.english); class Student implements Comparable int english=0; String name; Student(int e,String n) english=e; name=n; public int compareTo(Object b) Student st=(Student)b; return(st.english-this.english);/修改处 运行结果:实验4 使用TreeMap排序1实验目的:本实验的目的是让学生掌握TreeMap类的使用。2实验要求:编写一个Java应用程序,用户从键盘输入5个学生的姓名和数学分数、英语分数。程序分别按英语、数学和总分排序输出学生的姓名和分数。3程序模板: 按模板要求,将【代码1】【代码15】替换为Java程序代码。TreeMapExample.javaimport java.util.*;class MyKey implements Comparable int number=0; MyKey(int number) this.number=number; public int compareTo(Object b) MyKey st=(MyKey)b; if(this.number-st.number)=0)/当前对象和参数对象的number相等时,返回-1; return -1; else return(this.number-st.number);/若不等,则返回两者的差值; class Student String name=null; int englishScore,mathScore; Student(int e,int m,String name) englishScore=e; mathScore=m; =name; public class TreeMapExample public static void main(String args) TreeMaptreemap1=new TreeMap(); TreeMaptreemap2=new TreeMap(); TreeMaptreemap3=new TreeMap(); for(int i=1;i=5;i+) Scanner read=new Scanner(System.in); System.out.println(学生的姓名:); String name=read.nextLine();/从键盘输入学生的姓名 System.out.println(输入英语分数(整数):); int englishScore=read.nextInt(); System.out.println(输入数学分数(整数):); int mathScore=read.nextInt(); Student stu=new Student(englishScore,mathScore,name); treemap1.put(new MyKey(stu.englishScore),stu);/ 向treemap1添加“键/值”对,其中值为stu,要求按英语成绩排序 treemap2.put(new MyKey(stu.mathScore),stu);/ 向treemap2添加“键/值”对,其中值为stu,要求按数学成绩排序 treemap3.put(new MyKey(stu.englishScore+stu.mathScore),stu);/ 向treemap3添加“键/值”对,其中值为stu,要求按总成绩排序 System.out.println(按英语成绩排序:); Collection collection=treemap1.values();/ treemap1返回实现Collection接口的对象 Iteratoriter=collection.iterator(); / collection返回的Iterator while(iter.hasNext()/ 判断iter中是否存在元素 Student te=iter.next(); / 返回iter中的下一个元素 System.out.printf(姓名:%s,英语:%d,数学:%dn,,te.englishScore,te.mathScore); System.out.println(按数学成绩排序:); collection=treemap2.values();/ treemap2返回实现Collection接口的对象 iter=collection.iterator();/ collection返回的Iterator while(iter.hasNext() / 判断iter中是否存在元素 Student te=iter.next();/ 返回iter中的下一个元素 System.out.printf(姓名:%s,数学:%d,英语:%dn,,te.mathScore,te.englishScore); System.out.println(按总分排序:); collection=treemap3.values(); iter=collection.iterator(); while(iter.hasNext() Student te=iter.next(); System.out.printf(姓名:%s,总分:%dn,,te.englishScore+te.mathScore); 4实验指导与检查:向指导老师演示程序的运行效果。修改后的代码:import java.util.*;class MyKey implements Comparable int number=0; MyKey(int number) this.number=number; public int compareTo(Object b) MyKey st=(MyKey)b; if(this.number-st.number)=0)/当前对象和参数对象的number相等时,返回-1; return -1; else return(this.number-st.number);/若不等,则返回两者的差值; class MyKey1 implements Comparable String s; MyKey1(String s) this.s=s; public int compareTo(Object b) MyKey1 st=(MyKey1)b; if(this.s.equals(st.s)/当前对象和参数对象的number相等时,返回-1; return -1; else return(pareTo(st.s);/若不等,则返回两者的差值; class Student String name=null; int englishScore,mathScore; Student(int e,int m,String name) englishScore=e; mathScore=m; =name; public class TreeMapExample public static void main(String args) TreeMaptreemap1=new TreeMap(); TreeMaptreemap2=new TreeMap(); TreeMaptreemap3=new TreeMap(); TreeMaptreemap4=new TreeMap(); for(int i=1;i=5;i+) Scanner read=new Scanner(System.in); System.out.println(学生的姓名:); String name=read.nextLine();/从键盘输入学生的姓名 System.out.println(输入英语分数(整数):); int englishScore=read.nextInt(); System.out.println(输入数学分数(整数):); int mathScore=read.nextInt(); Student stu=new Student(englishScore,mathScore,name); treemap1.put(new MyKey(stu.englishScore),stu);/ 向treemap1添加“键/值”对,其中值为stu,要求按英语成绩排序 treemap2.put(new MyKey(stu.mathScore),stu);/ 向treemap2添加“键/值”对,其中值为stu,要求按数学成绩排序 treemap3.put(new MyKey(stu.englishScore+stu.mathScore),stu);/ 向treemap3添加“键/值”对,其中值为stu,要求按总成绩排序 treemap4.put(new MyKey1(),stu);/向treemap4添加“键/值”对,其中值为stu,要求按姓名的字典序排序 System.out.println(按英语成绩排序:); Collection collection=treemap1.values();/ treemap1返回实现Collection接口的对象 Iteratoriter=collection.iterator(); / collection返回的Iterator while(iter.hasNext()/ 判断iter中是否存在元素 Student te=iter.next(); / 返回iter中的下一个元素 System.out.printf(姓名:%s,英语:%d,数学:%dn,,te.englishScore,te.mathScore); System.out.println(按数学成绩排序:); collection=treemap2.values();/ treemap2返回实现Collection接口的对象 iter=collection.iterator();/ collection返回的Iterator while(iter.hasNext() / 判断iter中是否存在元素 Student te=iter.next();/ 返回iter中的下一个元素 System.out.printf(姓名:%s,数学:%d,英语:%dn,,te.mathScore,te.englishScore); System.out.println(按总分排序:); collection=treemap3.values(); iter=collection.iterator(); while(iter.hasNext() Student te=iter.next(); System.out.printf(姓名:%s,总分:%dn,,te.englishScore+te.mathScore); System.out.println(按姓名的字典序排序:); collection=treemap4.values(); iter=collection.iterator(); while(iter.hasNext() Student te=iter.next(); System.out.printf(姓名:%s,总分:%dn,,te.englishScore+te.mathScore); 运行结果:5实验报告:实验报告的格式如下(可要求学生填写并由实验指导老师签字):学号: 089074131 班级: 计084 姓名: 吴姚进 时间: 2010-10-20 实 验 内 容回 答老 师 评 语请改写代码,使得程序还能按姓名的字典序输出学生的姓名和总分。如上所示第8章 多线程实验1 线程的状态1实验目的:本实验的目的是让学生掌握线程的四种状态。2实验要求:编写一个Java应用程序,在主线程中再创建两个线 程,要求线程经历四种状态:新建、运行、中断和死亡。3程序模板: 按模板要求,将【代码1】【代码10】替换为Java程序代码。ThreadExample.javaclass Tortoise extends Thread int sleepTime=0,liveLength=0; Tortoise(

温馨提示

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

评论

0/150

提交评论