版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告河南财经政法大学计算机与信息工程学院实验报告2015年—2016年第1学期专业:软件工程课程名称:Java程序设计班级:姓名:学号:指导教师:实验报告河南财经政法大学计算机与信息工程学院第51页实验01:安装与熟悉J2SDK实验目的:了解和使用J2sdk(JDK)环境;熟悉J2sdk集成环境的基本命令、功能和基本用法,并学会配置path等环境变量;学习并熟练掌握使用J2SDK环境进行Java程序开发的全过程(包括:源程序的编辑、编译、调试、运行和结果查看);掌握Java应用程序的构成特点,并熟悉基本的错误调试。实验内容J2SDK开发包的安装(可选)根据要求写出统环境变量的配置编写一个JAVA程序进行调试,掌握在JDK开发包支持下编译和运行的过程实验数据记录及分析(或程序及运行结果)调试下面程序,指出错误publicClassHelloWorldApp{publicvoidstaticmain(string[]args){system.out.println(“HelloWorld!”);}}错误1:publicclassHelloWorldApp错误2:publicstaticvoidmain()错误3:String[]args错误4:System.out.println(“HelloWorld!”);写出调试过程编译和执行的具体命令上述文件保存后的文件名是:HelloWorldApp.java编译命令:\User\Administrator>javacHelloWorldApp.java编译正确后,产生的另外一个文件全称是:HelloWorldApp.class运行该程序的命令:\User\Administrator>javaHelloWorldApp如果上面的编译命令中的HelloWorldApp.java换成以下格式,写出执行编译结果:javachelloworldapp.java无错误,无影响javacHelloWorldApp错误:仅当显式请求注释处理时才接受类名称‘HelloWorldApp’1个错误如果上面的运行命令改成以下格式,写出执行结果,如有错误请改正。javahelloWorldApp.javajavahelloworldappjavaHelloWorldApp.class输入下面的随机数生成程序,重复上述编译和执行过程,分步写出两个命令执行过程。importjava.util.Random;publicclassMathDemo{publicstaticvoidmain(String[]args){Randomrand=newRandom();intv=rand.nextInt();System.out.println("你得到了一个"+v);}}保存文件名为:编译命令为:运行程序命令为:如果删除该程序的第一行import语句,重新编译,有何问题?评语:日期:年月日
实验02:Eclipse开发环境实验目的:了解最基本的环境配置过程。掌握Eclipse环境下的Java程序开发过程。实验数据记录及分析(或程序及运行结果)在Eclispe环境下创建一个项目MyExexercise,添加一个包demo,向包内添加一个类CommandParameter,配置运行参数,使得程序能够逐个输出命令行参数的要求。自动生成的CommandParameter程序的第一行是什么?在何处配置运行时的命令行参数?在何处调整项目缺省的字符集。在何处可以调整代码编辑框内的文字大小,写出操作指南。如果console窗口关闭了,如何操作才能重新显示出来?写出设置断点的步骤。如何查看运行过程中各个变量的值。评语:日期:年月日实验03:数值类型与变量声明实验目的:掌握标识符的定义规则认识Java的数据类型以及掌握各种变量的声明方法。掌握不同数值类型间的赋值问题实验内容编写一个JAVA程序,对不同类型的类型进行变量的定义并输出相应的值。实验数据记录及分析(或程序及运行结果)publicclassVariable{publicstaticvoidmain(String[]args){inta=10;System.out.println("a="+a);}}写出程序运行的结果修改上述程序,定义一个字符型变量,并定义其初值为'a',然后输出该变量的值,在下面写出修改后的代码片段。修改上述程序,定义一个字符型变量,并定义其初值为100,然后输出该变量的值,在下面写出修改后的代码片段。修改上述程序,定义一个字符型变量,并定义其初值为65536,然后输出该变量的值,在下面写出修改后的代码片段,如果有错误,说明原因。修改上述程序,定义一个单精度类型的变量,并定义其初值为10.0,然后输出该变量的值,在下面写出修改后的代码片段。修改上述程序,定义一个双精度类型的变量,并定义其初值为10.0,然后输出该变量的值,在下面写出修改后的代码片段。替换下面的代码段到上述程序,分析现象。floatf=10.0f;doubled=100.0d;f=d;System.out.println("f="+f);替换下面的代码段到上述程序,分析结果。inta=10;charc='a';a=c+a;System.out.printf("c=%c",a);声明一个布尔类型的变量,其初值为真。替换下面的代码段到上述程序,分析现象。Variablev=newVariable();System.out.println("v="+v);评语:日期:年月日
实验04:运算符和表达式实验目的:熟悉运算符的作用、优先级和结合方向认识Java的表达式,理解表达式的构成、类型实验数据记录及分析(或程序及运行结果)运行下面的程序,写出运行结果publicclassArithmaticOp{publicstaticvoidmain(Stringargs[]){inta=5+4,b=a*2,c=b/4;intd=b-c;inte=-d;intf=e%4;doubleg=18.4,h=g%4;inti=3;intj=i++;intk=++i;System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);System.out.println("e="+e);System.out.println("f="+f);System.out.println("g="+g);System.out.println("h="+h);System.out.println("i="+i);System.out.println("j="+j+"\nk="+k);}}写一个程序,计算32/5的结果,如果需要得到浮点数的结果该如何重写表达式。分别写出这两个赋值表达式。创建一个类名为GravityCalculator的类,在该类中写上以下代码,publicstaticvoidmain(String[]arguments){doublegravity=9.81;//重力速度,单位m/s^2doubleinitialVelocity=0.0;doublefallingTime=10.0;doubleinitialPosition=0.0;doublefinalPosition=0.0;System.out.println("Theobject'spositionafter"+fallingTime+"secondsis"+finalPosition+"m.");}运行此程序,输出运行结果。修改上述例子程序,完成以下功能:计算10秒钟后物体的位置。输出位置以米为单位,计算的数学公式为:x(t)=0.5×gt2+vit+xi变量作用值g加速度(m/s2)9.81t时间(s)10vi初速度(m/s)0xi初始位置0有四个整数分别用a、b、c、d表示,请使用条件运算符找出其中最大值。评语:日期:年月日
实验05:输入/输出处理实验目的:掌握输入输出程序的处理。实验数据记录及分析(或程序及运行结果)编写程序,从键盘上输入一个整数作为圆的半径,分别计算并输出圆周长、圆面积。编写程序,从键盘上输入三个实数,比较大小,分别输出最大值和最小值。运行下面的程序,写出运行结果,解释每种格式的含义。importjava.util.Calendar;publicclassCommandParameter{publicstaticvoidmain(String[]args){longn=461012;System.out.printf("%d%n",n);System.out.printf("%08d%n",n);System.out.printf("%+8d%n",n);System.out.printf("%,8d%n",n);System.out.printf("%+,8d%n%n",n);doublepi=Math.PI;System.out.printf("%f%n",pi);System.out.printf("%.3f%n",pi);System.out.printf("%10.3f%n",pi);System.out.printf("%-10.3f%n",pi);Calendarc=Calendar.getInstance();System.out.printf("%tB%te,%tY%n",c,c,c);System.out.printf("%tl:%tM%tp%n",c,c,c);System.out.printf("%tD%n",c);}}评语:日期:年月日实验06:流程控制(一)实验目的:能够正确使用if,switch语句,并且能正确使用合法的参数类型。在不同情况下,能够正确选择使用循环语句,能正确使用break,continue,能计算在循环中或循环后循环计数器的值。实验数据记录及分析(或程序及运行结果)编写程序,声明一个double型变量,并任意赋值,然后判断该书是否在1到10000之间,根据结果输出下面其中一行结果(x需用实际的数值代替):Thenumberxisbetween1and10000.Thenumberxisnotbetween1and10000.分析下面程序,写出运行结果classTestApp{publicstaticvoidmain(String[]args){for(inti=0;i<10;i++){if(i==3)break;System.out.print(i);}}}分析switch的作用,写出下面程序运行的结果classSwitchDemo{publicstaticvoidmain(Stringargs[]){intc=38;switch(c<10?1:c<25?2:c<35?3:4){case1:System.out.println(""+c+"℃有点冷。要多穿衣服。");case2:System.out.println(""+c+"℃正合适。出去玩吧。");case3:System.out.println(""+c+"℃有点热。");default:System.out.println(""+c+"℃太热了!开空调。");}}当c=38时,运行结果是什么?当c=8时,运行结果是什么?当c=48时,运行结果是什么?在每个case的输出语句后,添加break语句后,充分执行上述几种情况,分析有何变化,分析写出每次运行结果。当c=38时,运行结果是当c=8时,运行结果是当c=48时,运行结果是写出下面的代码段执行后,j的值是多少?inti=1,j=0switch(i){case2:j+=6;case4:j+=1;default:j+=2;case0:j+=4;}写出下列程序片段中while循环体重复执行的次数inta=1,b=1;while(a<=1000){a=2*a;b=b+1;}System.out.println(b);编写一个程序,输出1到200之间所有能被3整除的整数,要求输出时每行输出5个整数。编写一个程序,输出一个99乘法表,输出格式如下。1×1=11×2=22×2=41×3=32×3=63×3=91×4=42×4=83×4=124×4=161×5=52×5=103×5=154×5=205×5=251×6=62×6=123×6=184×6=245×6=306×6=361×7=72×7=143×7=214×7=285×7=356×7=427×7=491×8=82×8=163×8=244×8=325×8=406×8=487×8=568×8=641×9=92×9=183×9=274×9=365×9=456×9=547×9=638×9=729×9=81下面输出素数的程序原意输出为下面的结果,但现在不是,请调试下面程序,使之能够按要求输出:2357111317192329313741434753596167717379838997publicclassPrime{publicstaticvoidmain(String[]args){booleanisPrime=true;//用来标识每次计算的数是否是素数,如果不是则为false;for(intx=2;x<=100;x++){intm=x/2;for(inti=2;i<=m;i++){if(x%i==0)isPrime=false;//break;}if(isPrime){System.out.print(x+"\t");}if(n==5){System.out.println();}}}}评语:日期:年月日实验07:流程控制(二)实验目的:进一步巩固对分支、循环结构的掌握,并简单了解有关方法的使用实验数据记录及分析(或程序及运行结果)分析程序classTestApp{publicstaticvoidmain(String[]args){System.out.println(multiply(2,3,4,5));}publicintmultiply(intnums){intresult=1;for(intx:nums)result*=x;returnresult;}}能否正常运行?原因是什么?编写程序,接受命令行传入的的一个参数,能够统计其中大写字母、小写字母、数字、空格及其他字符的个数,并且分别输出统计数据,如果碰到了”\n”则终止统计。提示:声明并出初始化一个字符串变量:如Strings=”hello\nMike”;s.charAt(0)表示取该字符串的第1个字符h;s.charAt(1)取第2个字符e,其他依次类推;s.length()返回该字符串的字符个数,如”hello”的字符个数是5。利用java.util.Random类,编写一个程序,每次执行时生成一个1~6之间(含1和6)的整数。Random类的用法如下面代码段所示。Ramdomrand=newRandom();//第一步要创建一个随机数生成对象intx=rand.nextInt(5)+1;//第二步rand.nextInt(5)生成一个0到5之间的数字,然后简单加1,调整到1到6之间,以满足需要利用java.util.Random类,编写一个程序,每次执行时生成一个1~6之间(含1和6)的整数。Random类的用法如下面代码段所示。Ramdomrand=newRandom();//第一步要创建一个随机数生成对象intx=rand.nextInt(5)+1;//第二步rand.nextInt(5)生成一个0到5之间的数字,然后简单加1,调整到1到6之间,以满足需要。写一个程序,使用上述随机数生成方法模拟掷筛子(Dice)。一个人每次掷3个筛子,根据下面的规则来显示获胜的奖金情况。如果3个筛子都是6,赢20元;如果3个筛子都相同,赢10元;如果3个筛子中有任何两个都相同,赢5元。分析程序publicstaticdoublepower(doublex,intn){if(n==0)return1.0;elseif(n%2==0)returnpower(x*x,n/2);elsereturnpower(x*x,n/2)*x;}程序的功能是:当x=4,n=2时,调用power方法返回值是什么?写出每次的调用过程分析下面的两段程序publicstaticintP(intn){returnQ(n>=0?n:-n);}privatestaticintQ(intm){finalintBASE=10;return(m<BASE?1:1+Q(m/BASE));}例如:当n=5时,调用方法p返回值是多少?写出执行过程。Step1:n=5,p(5)=Q(5);Q(5)=1当n=9时,调用方法p返回值是多少?写出执行过程。当n=10时,调用方法p返回值是多少?写出执行过程。当n=123时,调用方法p返回值是多少?写出执行过程。总结P方法的功能是什么?修改方法P,完成同样功能,达到不调用其它函数包括递归调用自己。评语:日期:年月日
实验08:数组实验目的:知道怎么样声明、创建和初始化各种类型的数组理解二维数组的概念,能够声明、创建和初始化各种类型的二维数组掌握对一维或二维数组元素的访问方法掌握不规则二维数组的声明、创建和初始化以及访问的方法了解Arrays类及System类中关于数组操作的方法的使用实验内容编写程序,掌握数组的声明和访问数组元素,了解数组对象length的作用编写程序,掌握二维数组的定义和应用编写程序,掌握二维不规则数组的定义和使用编写程序,熟悉命令行参数实验数据记录及分析(或程序及运行结果)根据教科书程序5-5,写出外循环每次循环后数组的元素变化。循环开始前的数组元素依次是:第一次循环后的数组元素依次是:第二次循环后的数组元素依次是:循环后的数组元素依次是:分析下面程序,写出运行结果publicclassArrayTest{publicstaticvoidmain(String[]args){inti,j;inta[]={2,1,4,8,9,5,3};for(i=0;i<a.length-1;i++){intk=i;for(j=i;j<a.length;j++){if(a[j]<a[k]){k=j;}}inttemp=a[i];a[i]=a[k];a[k]=temp;}for(i=0;i<a.length;i++)System.out.print(a[i]+"");System.out.println();}}循环开始前的数组元素依次是:第一次循环后:i=j=k=数组元素依次是第二次循环后:i=j=k=数组元素依次是第三次循环后:i=j=k=数组元素依次是第四次循环后:i=j=k=数组元素依次是第五次循环后:i=j=k=数组元素依次是第六次循环后:i=j=k=数组元素依次是第七次循环后:i=j=k=数组元素依次是最后运行结果:按照要求运行下面的程序,回答问题。publicclassCommandParameter{publicstaticvoidmain(String[]args){for(inti=0;i<args.length;i++){System.out.println("第"+i+"个参数是"+args[i]);}}}请按照下面的运行命令运行,并写出运行结果。JavaCommandParameterAliceMikeMary你认为args数组的作用是什么?请写出运行时args数组中每个位置存放的元素值有如下数组intmyArray[]={1,2,3,4,5,6};intyourArray[]={10,9,8,7,6,5,4,3,2,1};请利用System.arraycopy方法编写一个程序,复制myArray数组的所有内容到yourArray数组,放在yourArray数组下标0开始的位置,并输出yourArray数组的每个元素。有整型数组,按顺序包含元素:10,7,9,2,4,5,1,3,6,8,请编写程序利用Arrays.sort方法对数组进行排序,并输出该数组的每个元素。补充完整下面的程序,使得程序能够计算出指定字符数组中连续字符块的个数:AcountRuns(A)<empty>0a1aaaaa1aaabbcccc3aabbabb4abcdefg7publicclassCountRuns{publicstaticvoidmain(String[]args){char[]ch={};//重复用上面的字符数组来初始化,验证你的算法是否正确intcount=0;//请在此处补充程序System.out.println("字符数组中连续字符块个数是"+count);}}评语:日期:年月日实验09:算法设计实验目的:掌握常用的查找算法掌握常用的排序算法掌握递归的应用实验数据记录及分析(或程序及运行结果)编写程序,从键盘上输入一个整数,判断该程序是否是素数,如果是在打印该数是素数,如果不是打印该数不是素数。已有一个升序排列的整数数组(含20个整数),要求从键盘输入一个整数后,将该数插入数组,并保持升序,输出该数组的数值验证程序的正确性。输出所有的水仙花数,所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如,153=13+53+33。分析程序,回答题后问题。publicclassBinarySearch{publicstaticvoidmain(String[]args){int[]r={5,13,19,21,37,56,64,75,80,88,92};intkey=56;intlow=0,high=r.length-1,mid=-1;while(low<=high){mid=(low+high)/2;if(r[mid]==key){break;}if(r[mid]>key)high=mid-1;elselow=mid+1;}if(low>high){System.out.println("notfound!");}else{System.out.println("foundat"+mid);}}}当key=21时,写出每次循环low、high和mid以及运行输出结果的值当key=22时,写出每次循环low、high和mid以及运行输出结果的值当key=56时,写出每次循环low、high和mid以及运行输出结果的值当key=88时,写出每次循环low、high和mid以及运行输出结果的值用递归的方法求(即求1!+2!+3!+….+20!),了解递归的用法MIT的几个朋友决定要参加马拉松比赛。他们的姓名和比赛用时如下:NameTime(minutes)Elena341Thomas273Hamilton278Suzie329Phil445Matt402Alex388Emma275John243James334Jane412Emily393Daniel299Neda343Aaron317Kate265问题:找出最快的运动员。打印出他们的姓名和他的时间(分钟为单位)。选项:找出次快的元动员。打印出他的姓名和时间参考:写一个方法以一个整数数组为参数,返回该数组中的最小值对应的下标索引值。调用此方法以下面的时间数组为参数,根据返回的索引找出姓名数组和时间数组中对应得元素,即跑的最快的人的姓名和对应时间。写第二个方法去查找第二快的队员。第二个方法使用第一个方法找出最快者,然后在剩下的元素中找出最快者即可。评语:日期:年月日实验10:面向对象编程基础(一)简单的类和对象实验目的:掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;实验数据记录及分析(或程序及运行结果)写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:使用构造函数完成各属性的初始赋值使用getter和setter的形式完成属性的访问及修改提供计算面积的getArea()方法一副牌Deck有52张扑克Card组成(不含王牌),每张牌有自己的牌型suit(用char类型)和点数rank(用String类型),补充完整下面的类的定义。publicclassCard{publicCard(){this.suit=suit;this.rank=rank;} publicStringtoString(){ returnsuit+rank; } publicstaticvoidmain(String[]args){ Cardc=newCard('红',"10"); System.out.println(c); }}银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期(Date),账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。一个Fan有自己的品牌和型号,其调速旋钮speed可以调整Fan的速度(档级在0、1、2、3范围内),通电开关可以改变电扇状态(通电表示工作就绪或者工作,断电表示停止工作)请仔细分析并提供Fan类的定义。并编写程序对其进行测试。具体要求如下:表示该类对象的状态可以用品牌(brand,可以用字符串型表示,因为品牌通常都是多个字符组成的)、工作状态(status,用来反映一个电风扇是否处于通电就绪ready、正在转动working或者静止stop)、当前的速度(speed,可以用数值型表示);用构造函数可以创建一个电风扇对象,指定其品牌就可以了,一个电风扇的初始状态可以是静止,而且初始速度为0,分析为什么不适宜直接通过构造函数的形式参数来指定初始状态和速度;给该类提供如下的方法,重点考虑每个动作导致的状态变化,形成代码逻辑;提供一个方法来表示电风扇的开与关,模拟一个开关动作通过加速和减速两个方法来调整速度,当速度超出极限(0或3),向控制台输出一条告警信息作为提示,并且不执行该调速动作。提供一个方法能够返回电风扇当前的状态和速度添加一个main方法,按顺序完成以下工作,考虑状态与速度变化和开关动作之间的关系:创建一个电风扇对象,用f表示;加速一次电风扇;向控制台输出f的状态和速度;启动电风扇(调用对象的开关方法);向控制台输出f的状态和速度;连续加速4次(考虑发生什么情况);向控制台输出f的状态和速度;连续减速4次(考虑发生什么情况);向控制台输出f的状态和速度;关掉电风扇(调用对象的开关方法);连续加速2次向控制台输出f的状态和速度;解释下面的程序运行结果输出为什么是nullpublicclassMy{Strings;publicvoidMy(){s="Constructor";}publicvoidgo(){System.out.println(s);}publicstaticvoidmain(Stringargs[]){Mym=newMy();m.go();}}给出下面的类,找出后面的5个声明中,哪些是重载后的构造函数publicclassConstOver{publicConstOver(intx,inty,intz){}}A.ConstOver(){}B.ProtectedintConstOver(){}C.PrivateConstOver(intz,inty,bytex){}D.PublicObjectConstOver(intx,inty,intz){}E.PublicvoidConstOver(bytex,bytey,bytez){}给出下面的类,找出后面的5个声明中,哪些是重载后的setVar函数publicclassMethodOver{publicvoidsetVar(inta,intb,floatc){}}A.PrivatevoidsetVar(inta,floatc,intb){}B.ProtectedvoidsetVar(inta,intb,floatc){}C.PublicintsetVar(inta,floatc,intb){returna;}D.PublicintsetVar(inta,intb,floatc){returna;}E.ProtectedfloatsetVar(inta,intb,floatc){returnc;}评语:日期:年月日实验11:面向对象编程基础(二)方法中的参数传递实验目的:理解方法中的形参和实参传递在传递基本类型和引用类型时的差异实验要求和过程程序运行后的输出是什么?classTestReference{publicstaticvoidmain(String[]args){intx=2;TestReferencetr=newTestReference();System.out.print(x);tr.change(x);System.out.print(x);}publicvoidchange(intnum){num=num+1;}}写出程序运行结果publicclassFoo{publicstaticvoidmain(String[]args){StringBuffera=newStringBuffer(“A”);StringBufferb=newStringBuffer(“B”);operate(a,b);//调用了Foo类的一个类方法System.out.printIn(a+“,”+b);}staticvoidoperate(StringBufferx,StringBuffery){x.append(y);y=x;}}输入下面的类,结合实验十(2)中的Card类,完成下面的要求publicclassJLab1201{ staticfinalcharsuits[]={'H','S','D','C'}; staticfinalStringranks[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; staticCard[]cards=newCard[52]; /** *初始化扑克牌数组 */ publicstaticvoidinit(){ for(inti=0;i<suits.length;i++){ for(intj=0;j<ranks.length;j++){ cards[i*ranks.length+j]=newCard(suits[i],ranks[j]); } } } publicstaticvoidswap1(Cardc1,Cardc2){ Cardc=c1; c1=c2; c2=c; } publicstaticvoidswap1(inti,intj){ Cardc=cards[i]; cards[i]=cards[j]; cards[j]=c; } publicstaticvoidswap2(Cardc1,Cardc2){ chars=c1.suit; c1.suit=c2.suit; c2.suit=s; Stringr=c1.rank; c1.rank=c2.rank; c2.rank=r; } /** *@paramargs */ publicstaticvoidmain(finalString[]args){ init(); //任取两张牌 Cardc1=cards[10]; Cardc2=cards[12]; System.out.println("第11张牌是:"+c1+"\t第13张牌是:"+c2); }}1) 在main方法中,添加下面几行语句,写出并分析结果swap1(c1,c2);System.out.println("执行swap1(c1,c2)后");System.out.println("c1引用的牌是:"+c1+"\tc2引用的牌是:"+c2);System.out.println("第11张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);2) 在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果swap1(10,12);System.out.println("执行swap1(10,12)后");System.out.println("c1引用的牌是:"+c1+"\tc2引用的牌是:"+c2);System.out.println("第11张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);3) 在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果swap2(c1,c2);System.out.println("执行swap2(c1,c2)后");System.out.println("c1引用的牌是:"+c1+"\tc2引用的牌是:"+c2);System.out.println("第11张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);评语:教师签字:日期:年月日实验12:面向对象编程基础(三)访问范围和作用域实验目的:理解访问控制修饰符的作用;掌握package的作用实验要求和过程下列程序有错误,调试、写出错误原因并改正。publicclassVariableScope{publicstaticvoidmain(Stringargs[]){inti=10;{intk=10;System.out.println("i="+i);System.out.println("k="+k);}System.out.println("i="+i);System.out.println("k="+k);}}在项目中创建两个包p1,将实验十(3)中的Account类移至p1下,保证Account类的账户余额属性balance的访问范围修饰为public,并在p1下创建一个测试类Test,如下:publicclassTest{ publicstaticvoidmain(String[]args){ Accountc=newAccount("62254237967","丁怡");System.out.println("当前账户余额是:"+c.banance); }}执行下面的实验步骤,观察并分析程序中出现的现象。依次将balance前的访问范围修饰符变为protected、private和缺省,观察上面的Test程序会出现何种现象,如有错误,解释原因。创建和p1并列的包p2,并将Account类从p1移至p2下,观察上面的Test程序会出现何种现象,如有错误,如何解决。将p2下的Account类class前的public去掉,观察上面的Test类会出现何种现象,如有错误,可否解决。恢复Account类为public后,依次将balance前的访问范围修饰符变为protected、private和缺省,观察上面的Test程序会出现何种现象,如有错误,解释原因。比较并写出上述1和4中的异同。评语:教师签字:日期:年月日实验13:面向对象编程基础(四)类的关系实验目的:理解类之间的关联关系理解类之间的整体与部分关系理解类之间的组合/聚合关系实验要求和过程定义一个类Deck,表示一副牌,每副牌包含52张牌(不含王牌,用数组实现)Deck和Card之间属于什么关系。定义一个构造方法,实现一副牌的初始化,即按照“黑、红、梅、方”的花色顺序,点数从A-K,生成52张扑克牌。提供一个方法show,按照每行13张,逐一显示全部的扑克牌。如黑A黑2……黑K红A红2……红K梅A梅2……梅K方A方2……方K提供一个show(intidx)方法,返回idx-1位置处的扑克牌对象。定义一个Teacher类,该类提供教师的工号、姓名、职称信息,再定义一个课程类,描述了课程的编号、课程名称、理论课时和实验课时、学分以及每门课程都要指定一个教师,通过课程能够获得任课教师对象。小镇的图书馆需要一个新的电子租借系统。该小镇有两个图书馆,每个图书馆提供很多书让客户去租赁。客户可以打印出所有的图书清单,包括现存的,已经借出的和归还的。现在我们需要提供两个类,Book类和Library类,有这俩个类提供图书数据库的功能。请补充缺少的方法去完成类的功能。步骤:补充完成Book类的定义。这个类需要定义获取图书标题的方法,查看图书的作者,查看是否可用的方法,是否借出方法。图书的状态用“available”和“borrowed”表示。现在的结构框架内缺少这些方法的执行内容,请用合适的功能代码补充方法体的内容。用main方法测试方法,当你运行程序时应该输出的内容:图书名称:Java程序设计教程图书作者:丁一出租状态:出租中可用状态:不可用publicclassBook{Stringtitle;//图书名称Stringauthor;//作者booleanborrowed;//图书状态,初始状态为可用//使用给定的图书名称,创建一个新的Book对象,并置该对象的初始状态为可用publicBook(StringbookTitle,Stringauthor){//Implementthismethod}//借书,标记该书为借出状态publicvoidborrowed(){//Implementthismethod}//还书,标记该书为可用状态publicvoidreturned(){//Implementthismethod}//Returnstrueifthebookisrented,falseotherwisepublicbooleanisBorrowed(){//Implementthismethod}//Returnstrueifthebookisavailable,falseotherwisepublicBooleanisAvailable(){//Implementthismethod}//返回图书的名称publicStringgetTitle(){//Implementthismethod}publicstaticvoidmain(String[]arguments){Bookexample=newBook("Java程序设计教程");System.out.println("图书名称:"+example.getTitle());System.out.println("图书作者:"+example.getAuthor());System.out.println("出租状态:"+example.isBorrowed());System.out.println("可用状态:"+example.isAvailable());}}完成library类:我们应该建立一个类用于表示每个图书馆,并且管理每个图书馆的图书,他们有不同的地址和图书数目。建立一个Library类。复制下面的结构代码。我们提供一个main方法用于建立两个图书馆,然后执行一些对书目的操作,图书入库、出借图书和图书归还,当一本处于出租中的图书被借阅时,输出“图书已被出租”,如果没有要借的图书,输出“没有发现要借的图书”。当然,这些所有的方法成员和变量成员都是缺少的,你需要填充这些缺省的部分。解读下面的main方法检查编译错误,填充缺少的方法和成员内容。publicclassLibaray{//Addthemissingimplementationtothisclasspublicstaticvoidmain(String[]args){//CreatetwolibrariesLibraryfirstLibrary=newLibrary("文化路80号");LibrarysecondLibrary=newLibrary("建设路22号");//AddfourbookstothefirstlibraryfirstLibrary.addBook(newBook("飞鸟集","泰戈尔"));firstLibrary.addBook(newBook("安妮日记","弗兰克"));firstLibrary.addBook(newBook("红楼梦","曹雪芹"));firstLibrary.addBook(newBook("希腊的神话和传说","斯威布"));secondLibrary.addBook(newBook("安妮日记","弗兰克"));secondLibrary.addBook(newBook("红楼梦","曹雪芹"));secondLibrary.addBook(newBook("希腊的神话和传说","斯威布"));System.out.println("图书馆地址:");firstLibrary.printAddress();secondLibrary.printAddress();System.out.println();System.out.println("从两个图书馆借【飞鸟集】");firstLibrary.borrowBook("飞鸟集");firstLibrary.borrowBook("飞鸟集");secondLibrary.borrowBook("飞鸟集");System.out.println();//输出两个图书馆各自可外借的图书System.out.println("firstlibrary可外借的图书:");firstLibrary.printAvailableBooks();System.out.println();System.out.println("secondlibrary可外借的图书:");secondLibrary.printAvailableBooks();System.out.println();//向firstlibrary归还【飞鸟集】System.out.println("向firstlibrary归还【飞鸟集】:");firstLibrary.returnBook("飞鸟集");System.out.println();//输出firstlibrary图书馆可外借的图书System.out.println("firstlibrary可外借的图书:");firstLibrary.printAvailableBooks();}}评语:教师签字:日期:年月日实验14:面向对象编程基础(五)static实验目的:理解static的作用和使用方法实验要求和过程写出程序运行结果,如有错误,指出原因并改正classStaticDemo{staticintx;inty;static{x=10;}publicstaticintgetX(){returnx;}publicstaticvoidsetX(intnewX){x=newX;}publicintgetY(){returny;}publicvoidsetY(intnewY){y=newY;}publicstaticvoidmain(String[]args){System.out.println("静态变量x="+StaticDemo.getX());System.out.println("实例变量y="+StaticDemo.getY());StaticDemoa=newStaticDemo();StaticDemob=newStaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println("静态变量a.x="+a.getX());System.out.println("实例变量a.y="+a.getY());System.out.println("静态变量b.x="+b.getX());System.out.println("实例变量b.y="+b.getY());}}评语:教师签字:日期:年月日实验15:面向对象基础编程(六)继承实验目的:理解继承的概念掌握继承的实现理解继承中的覆盖现象理解抽象类的概念,掌握定义抽象类的方法和应用实验数据记录及分析(或程序及运行结果)首先预测下列程序的运行结果,然后编译、执行以验证你的预测:classPet{protectedStringname;publicPet(Stringn){name=n;}publicStringgetName(){returnname;}publicStringmove(){return"run";}publicStringspeak(){return"";}publicStringtoString(){return"Mypet"+name;}}classDogextendsPet{protectedintweight;publicDog(Strings){super(s);}}classPetTest{publicstaticvoidmain(String[]args){PetmyPet=newPet("George");DogmyDog=newDog("Spot");System.out.println(myPet.toString()+"\n"+"Speak:"+myPet.speak()+"\n"+myPet.move()+""+myPet.getName()+"\n");System.out.println(myDog.toString()+"\n"+"Speak:"+myDog.speak()+"\n"+myDog.move()+""+myDog.getName()+"\n");}}修改Dog类的构造函数,使之可以初始化Dog类中的weight值。在Dog类中添加方法getWeight以获得其weight值。修改类Test,使用新的构造函数创建一个名为“snoopy”,重为10的Dog类的对象,并利用其方法输出包括重量在内的各项值要使Dog类对象的speak()方法返回值为“WoofWoof”,应如何做?修改(1)中程序,并验证你的做法。试改写实验十五(1)中的Pet类,其中move与speak方法定义为抽象方法。定义一个Pet类的子类Cat类。在Cat类中实现move和Speak方法。其中move方法返回值为“run”,speak方法返回值为“meowmeow”。编写含有main方法的公共类PetTest,在其方法体中创建一个名为myCat的Cat的实例。并依照十五(1)PetTest类main方法中的相应格式输出结果。按照要求完成程序publicclassTest{publicstaticvoidmain(Stringargs[]){System.out.println("创建父类对象:");SuperClasssc0=newSuperClass();System.out.println("\n创建第一个子类对象:");SubClasssc1=newSubClass();System.out.println("\n创建第二个子类对象:");SubClasssc2=newSubClass(1);}}classSuperClass{SuperClass(){System.out.println("父类的构造函数");}}classSubClassextendsSuperClass{SubClass(){System.out.println("子类的第一个构造函数");}SubClass(inti){System.out.println("子类的第二个构造函数");}}要求:去掉SubClass的所有构造函数,然后将Test类中main方法的最后两行语句删除。预测修改后程序的运行结果,并进行验证。按照要求完成程序:第一个类是图形类(Shape),含有一个成员变量color(字符串类型),一个没有参数的构造方法,以及一个有一个字符串类型参数的构造方法来初始化颜色变量,还有一个返回颜色变量值的成员方法show,以及一个抽象方法getArea获取面积,返回值为double类型;第二个类是圆形类(Circle)继承自图形类,含有一个成员变量半径r,有一个有两个参数的构造方法,来初始化颜色和半径,一个方法getArea,返回值为double,获取圆的面积值。第三个类是矩形类(Rectangle)继承自图形,含有两个double类型的成员变量长a和宽b,有一个有三个参数的构造方法,来初始化颜色、长和宽,一个方法getArea,返回值为double,获取矩形的面积值。第四个类是测试类(TestShape),分别定义圆形类和矩形类的实例对象,并用show方法,getArea方法来测试自己的定义假定银行的一个存取款系统有两类客户,一类是现金用户,一类是信用卡用户。银行对每个客户都要登记其姓名name,并为之分配一个唯一的账户号码aid,现金用户还要记录其卡的类型(工资卡、借记卡、理财卡),而信用卡用户则根据其信用级别有一定的透支限额lineOfCredit(A级10000元、B级5000元、C级2000元、D级1000元)。每种客户都可以实现存deposit、取withdraw、和查询余额getBalance,信用卡用户还可以查询透支情况findOverdraw。对于现金用户,每次取款操作只能在账户实际额度balance内操作,允许现金用户改变自己的帐户类型。分析有哪些属性和方法可以作为两个子类的共同属性和方法,然后写出抽象类Account的定义。分析CashAccount有那些新增的属性和方法,定义一个继承于Account的子类CashAccount。分析CreditAccount有那些新增的属性和方法,然后定义一个继承于Account的子类CreditAccount,添加增加的属性和方法。请按照要求编写一个程序Test,用你所定义的类完成下列业务操作。用Account作为类型定义两个变量credit和debit,分别引用CreditAccount和CashAccount的对象,并完成存款500元的操作。每个对象完成取款200元的操作后再次取款400元,请输出各自的余额。可以通过credit查看引用对象的透支额吗,如果不能,怎样修改可以查看?评语:日期:年月日实验16:面向对象基础编程(七)接口实验目的:掌握接口的定义和实现接口的方法实验要求和过程如果将实验十五(1)的Pet类定义为接口,即所有相应方法全部为抽象方法,则Cat类该如何改动?试改写相关代码,并验证你的结果。根据要求完成程序:定义名称为PCI()的接口,包括启动的方法start和关闭的方法stop;定义名称为NetworkCard的类表示网卡,实现PCI接口,并且其在实现start方法时输出“sendingdata……”,在实现stop方法时输出“networkstop.”定义名称为SoundCard的类表示声卡,实现PCI接口;并且其在实现start方法时输出“dudu……”,在实现stop方法时输出“soundstop.”定义名称为MainBoard的类表示主板,包含方法publicvoidusePCICard(PCIp),在方法体内通过p来启动和关闭组件;定义一个包含main方法的Test类,在main方法内创建一个MainBoard对象用mb来引用,创建一个NetworkCard对象用nc来引用,创建一个SoundCard对象用sc来引用,分别通过mb来使用usePCICard(PCIp)启动声卡和网卡。评语:教师签字:日期:年月日实验17:泛型、枚举和内部类实验目的:理解泛型的作用,掌握泛型类的声明及实例化的方法掌握枚举类的定义和使用掌握内部类的定义和使用方法掌握匿名类的使用方法实验要求和过程在java.util包中有一接口Comparator<T>,提供了比较器的功能。请根据此接口定义的比较方法,针对10(3)的类Account中的余额字段,完成比较器类的定义,并改写实验10(3),验证你的设计是否正确,要求利用泛型机制。将实验15(5)中的信用等级作为一个枚举类定义,并改写实验15(5)的相关程序模仿程序8-5,利用匿名内部类实现对Account数组进行按照属性id的大小进行排序。将实验15(5)中的信用等级作为一个内部类定义,在Account类中提供查询信用等级的方法,并改写实验15(5)的相关程序评语:教师签字:日期:年月日实验18:异常实验目的:理解异常现象及异常的抛出机制掌握异常抛出时的处理机制掌握自定义异常的方法能够掌握在方法代码中添加抛出异常的处理实验要求和过程publicclassTestApp{publicstaticvoidmain(String[]args){try{inti=0;intj=1/i;Stringmyname=null;if(myname.length()>2)System.out.print(“1”);}catch(NullPointerExceptione){System.out.print(“2”);}catch(Exceptione){System.out.print(“3”);}}}分析上述程序运行后的输出的结果和原因。下面是一个名称为NegativeAmountException的自定义异常类,表示一个不正常的银行账目事件类。填充下面的语句,完成该类的编写。classNegativeAmountException_________{//NegativeAmountException异常:用消息s创建异常NegativeAmountException(Strings){super(s);}}classAccount{doublebalance;//构造函数,余额为0;publicAccount(){balance=0;}//构造函数,余额为n,如果初始余额小于0抛出异常publicAccount(doublen)throwsNegativeAmountException{if(n>0){this.balance=n;}else{____________________________________________________;}}//查询余额方法,返回当前余额publicdoublegetBalance(){returnthis.balance;}//存款方法,存款数额amount;如果存款数目小于0抛出异常publicvoiddeposit(doubleamount)____________________{if(amount>=0){balance+=amount;}else{thrownewNegativeAmountException("存款出错");}}//取款方法,取款数额amount;如果取款数目小于0抛出异常publicvoidwithdraw(doubleamount)____________{if(amount<0){thrownewNegativeAmountException("操作错误");}elseif(balance<amount){thrownewNegativeAmountException("取款出错");}else{balance-=amount;}}}模仿上题中NegativeAmountException自定义异常的写法,根据下面要求写程序。自定义异常OnlyOneException与NoOprandException,并补充各自类的构造函数,参数用于保存异常发生时候的信息;添加main方法,从命令行参数读入两个数据,计算这两个数据的和并输出。如果参数的数目只要一个,抛出OnlyOneException异常并退出程序的执行;如果没有参数,抛出NoOprandException异常并退出程序的执行;为实验15(5),添加一个取款异常WithdrawException,请定义异常类WithdrawException,要求:异常对象记录取款发生时的帐户余额、取款额还有取款人。覆盖继承于超类的方法getMessage(),按以下格式返回信息:取款人,账号余额,取款额,原因:透支。修改CashAccount的取款方法,当用户取款超出额度时,抛出异常。编写一个可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲周疣的临床护理
- 产后风湿的健康宣教
- 缓慢型心律失常的护理
- 《设计你的人生》课件
- 《单片机原理及应用 》课件-第5章
- 嘴巴里长泡的临床护理
- 阔韧带妊娠的健康宣教
- 皮脂腺增生的临床护理
- JJF(陕) 116-2024 直流数字功率表校准规范
- 比较线段的长短课件西西模
- 麻栗坡县润泽铜业有限公司麻栗坡县杨万铜矿矿山地质环境保护与土地复垦方案
- 2023年新课标全国Ⅱ卷 真题语文文学类文本阅读《社戏》解析课件
- 班杜拉的社会学习理论
- 2023年自考公共管理试题答案历年试题及答案汇总
- 幼儿园教师教科研活动记录表实用文档
- 半自动钻床 课程设计报告书
- st段抬高型急性心肌梗死stemi指南
- 机电产品设计奥秘探究知到章节答案智慧树2023年青岛滨海学院
- 新外研版高中英语必修第一册Unit 6教学设计
- 2023版中国近现代史纲要课件:05第五专题 中国人民在精神上由被动转为主动
- 快乐孕育孕妇学校高级教程孕产期心理保健
评论
0/150
提交评论