JAVA实验2复习资料.docx
- 文档编号:13613590
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:30
- 大小:21.29KB
JAVA实验2复习资料.docx
《JAVA实验2复习资料.docx》由会员分享,可在线阅读,更多相关《JAVA实验2复习资料.docx(30页珍藏版)》请在冰点文库上搜索。
JAVA实验2复习资料
1.设计一个名为figure的图形软件包(package)。
包中包含三角形、矩形、圆三个类。
要求:
(1)每个类都要构造方法并为成员设置get和set方法;
(2)每个类都要有计算周长和面积的成员方法;(3)完成该软件包后的编码后,在另一个包的含有main方法的类中编写代码,分别使用图形软件包中的三个类,生成三个对象,并打印出其周长和面积。
******************************************************
packagefigure;
publicclassjuxing{//矩形的计算函数
privatedoublelenth,width;
publicjuxing(){
lenth=0;
width=0;
}
publicjuxing(doublex,doubley){
lenth=x;
width=y;
}
publicvoidsetLenth(doublelenth){
this.lenth=lenth;
}
publicdoublegetLenth(){
returnlenth;
}
publicvoidsetWidth(doublewidth){
this.width=width;
}
publicdoublegetWidth(){
returnwidth;
}
publicdoubleperimeter(){
returnlenth*width;
}
publicdoubleArea(){
return(lenth+width)*2;
}
}
******************************************************
packagefigure;
importjava.math.*;
publicclasssanjiaoxing{//三角形的计算函数
privatedoubleside1;
privatedoubleside2;
privatedoubleside3;
publicsanjiaoxing(){
side1=0;
side2=0;
side3=0;
}
publicsanjiaoxing(doublex,doubley,doublez){
side1=x;
side2=y;
side3=z;
}
publicvoidsetSide1(doubleside1){
this.side1=side1;
}
publicdoublegetSide1(){
returnside1;
}
publicvoidsetSide2(doubleside2){
this.side2=side2;
}
publicdoublegetSide2(){
returnside2;
}
publicvoidsetSide3(doubleside3){
this.side3=side3;
}
publicdoublegetSide3(){
returnside3;
}
publicdoubleperimeter(){
returnside1+side2+side3;
}
publicdoubleArea(){
doublep=(side1+side2+side3)/2;
returnMath.sqrt(p*(p-side1)*(p-side2)*(p-side3));
}
}
******************************************************
packagefigure;
importjava.math.*;
publicclassyuanxing{//圆形的计算函数
privatedoubleradius;
publicyuanxing(){
radius=0;
}
publicyuanxing(doublex){
radius=x;
}
publicvoidsetRadius(doubleradius){
this.radius=radius;
}
publicdoublegetRadius(){
returnradius;
}
publicdoubleperimeter(){
return2*Math.PI*radius;
}
publicdoubleArea(){
returnMath.PI*radius*radius;
}
}
******************************************************
packagefigure_show;
importfigure.juxing;
importfigure.sanjiaoxing;
importfigure.yuanxing;
publicclassmain{
publicstaticvoidmain(String[]args){
sanjiaoxingt=newsanjiaoxing(3,4,5);
System.out.println("三角形的周长:
"+t.perimeter());
System.out.println("三角形的面积:
"+t.Area());
juxingr=newjuxing(3,4);
System.out.println("矩形的周长:
"+r.perimeter());
System.out.println("矩形的面积:
"+r.Area());
yuanxingc=newyuanxing(5);
System.out.println("圆形的周长;"+c.perimeter());
System.out.println("圆形的面积:
"+c.Area());
}
}
2.设计一个教师类Teacher(属于.sdkd包),要求:
1)属性有编号(intno)、姓名(Stringname)、年龄(intage)、所属学院(seminary),为这些属性设置相应的get和set方法。
2)为Teacher类重写equals方法,要求:
当两个教师对象的no相同时返回true。
3)重写Teacher类的toString方法,通过该方法可以返回“编号为**、姓名为**、年龄为**的**学院老师”形式的字符串。
4)由多个Teacher对象所形成的数组可以以两种方法排序(编号由低到高排序):
1)使用Arrays.sort(Object[]a)方法;2)使用Arrays.sort(Object[]a,Comparatorc)方法。
5)再定义一个类TeacherManagement(属于cn.sd包),提供方法search,方法可以在一组给定的教师中,根据姓名(或年龄)返回等于指定姓名(或年龄)的教师的字符串信息,信息格式为:
“编号为**、姓名为**、年龄为**的**学院老师”。
如果没有满足条件的教师,则返回“没有符合条件的教师”。
6)构造main方法进行测试。
******************************************************
package.sdkd;
publicclassTeacherimplementsComparable{
privateintno;
privateStringname;
privateintage;
privateStringseminary;
publicTeacher(intno,Stringname,intage,Stringseminary){
this.no=no;
this.name=name;
this.age=age;
this.seminary=seminary;
}
publicvoidsetNo(intno){
this.no=no;
}
publicintgetNo(){
returnno;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetAge(intage){
this.age=age;
}
publicintgetAge(){
returnage;
}
publicvoidsetSeminary(Stringseminary){
this.seminary=seminary;
}
publicStringgetSeminary(){
returnseminary;
}
publicbooleanequals(Objecto){
booleanresult=false;
Teachert=(Teacher)o;
if(this.no==t.no){
returntrue;
}
returnresult;
}
publicStringtoString(){
return"编号为"+getNo()+",姓名为"+getName()+",年龄为"+getAge()+"的"+getSeminary()+"学院老师";
}
//compareTo接口
publicintcompareTo(Objecto){
TeacherotherTea=(Teacher)o;
if(no if(no>otherTea.no)return1; return0; } } package.sdkd; importjava.util.Arrays; importcn.sd.*; publicclassmain{ publicstaticvoidmain(String[]args){ Teachert1=newTeacher(0001,"白玉",28,"信息"); Teachert2=newTeacher(0002,"李兰馨",36,"地科"); Teachert3=newTeacher(0003,"张成宇",40,"材料"); Teacher[]TeaArray=newTeacher[3]; TeaArray[0]=newTeacher(1001,"白玉",28,"信息"); TeaArray[1]=newTeacher(1005,"李兰馨",42,"地科"); TeaArray[2]=newTeacher(1003,"张成宇",40,"材料"); System.out.println(t1.toString()); System.out.println(t2.toString()); System.out.println(t3.toString()); System.out.print("\n"); t1.setNo(t2.getNo()); System.out.println("***临时修改教师t3的信息***"); System.out.println("教师t1与教师t2是否相同? "); System.out.println(t1.equals(t2)); System.out.println("教师1与教师t3是否相同? "); System.out.println(t1.equals(t3)); System.out.print("\n"); System.out.println("按编号升序排列: "); Arrays.sort(TeaArray); for(inti=0;i System.out.print("编号为"+TeaArray[i].getNo()+"、姓名为"+TeaArray[i].getName()+"、年龄为"+TeaArray[i].getAge()+"的"+TeaArray[i].getSeminary()+"学院老师"); System.out.println(); } System.out.println(); System.out.println("年龄为28的教师的信息: "); System.out.println(TeacherManagement.search(28,TeaArray)); } } 4.一个公司有三种不同类型的员工,他们的薪水分别按年(计算方法: 年薪*工作年数)、按月(计算方法: 月薪*工作月数)、按周(计算方法: 周薪*工作周数)结算。 编写类Company,提供计算所有员工总薪水的方法getEarnings,该方法能够根据输入的一组员工(包含各类员工)返回这组员工的总薪水。 packagepay; publicclasspay{ publicintwages; publicintday; publicpay(intwages,intday) { this.wages=wages; this.day=day; } publicpay() { } publicintshow() { returnwages*day; } } classpay_aextendspay { publicpay_a(inta,intb) { wages=a; day=b; } publicpay_a(){} publicintshow() { return(int)(((double)day/365)*wages); } } classpay_bextendspay { publicpay_b(inta,intb) { wages=a; day=b; } publicpay_b(){} publicintshow() { return(int)(((double)day/30)*wages); } } classpay_cextendspay { publicpay_c(inta,intb) { wages=a; day=b; } publicpay_c(){} publicintshow() { return(int)(wages*day); } } ****************************************************** packagepay; importpay.pay; importpay.pay_a; importpay.pay_b; importpay.pay_c; publicclassteat24{ publicstaticintgetEarings(pay[]p,intlength) { intsum=0; for(inti=0;i { sum+=p[i].show(); } returnsum; } publicstaticvoidmain(String[]args) { pay[]pp=newpay[5]; pp[0]=(newpay_a(8,2000)); pp[0]=(pay_a)pp[0]; pp[1]=newpay_b(2,500); pp[1]=(pay_b)pp[1]; pp[2]=newpay_c(10,15000); pp[2]=(pay_c)pp[2]; pp[3]=newpay_a(12,5000); pp[3]=(pay_a)pp[3]; pp[4]=newpay_c(5,1100); pp[4]=(pay_c)pp[4]; intsum=getEarings(pp,5); for(inti=0;i<4;i++){ System.out.println("第"+i+"个员工的薪水为: "+pp[i].show()); } System.out.println("员工的总薪水为: "+sum); } } 5.编码实现一个类: (1)提供一个静态方法,可以将输入的一个int[]数组按照从小到大的顺序排列; (2)提供静态方法,对排好序的数组使用折半查找(使用递归和非递归两种形式分别实现)查找某一个整数。 packageshiyaner5; importjava.util.Scanner; publicclassmyArray{ publicstaticvoidsort(int[]a,intn){ inttemp; for(inti=0;i for(intj=0;j if(a[j]>a[i]){ temp=a[j]; a[j]=a[i]; a[i]=temp; } } } } publicstaticintBinarySearch(int[]array,intx,intn){ intleft=0; intright=n-1; while(left<=right){ intmiddle=(left+right)/2; if(x==array[middle]){ System.out.println(x+"位于数组中第"+(middle+1)+"个位置。 "); returnmiddle; } if(x>array[middle]){ left=middle+1; }else{ right=middle-1; } } System.out.println("未找到! "); return-1; } publicstaticvoidmain(String[]args){ int[]s=newint[]{6,8,2,9,4,11,1,7,12,10}; intn; Scannerscan=newScanner(System.in); for(inti=0;i<10;i++){ System.out.print(s[i]+""); } //排序 sort(s,10); System.out.println(); System.out.println("----------------------"); for(inti=0;i<10;i++){ System.out.print(s[i]+""); } System.out.println(); System.out.println("----------------------"); //查找 System.out.print("请输入要查找的正整数: "); n=scan.nextInt(); BinarySearch(s,n,10); } } 6.使用一维数组编码实现一个栈(Stack)类,要求提供以下操作: (1)booleanisEmpty(): 判断栈当前是否为空; (2)入栈操作voidpush(obj): 把数据元素obj插入堆栈;(3)出栈操作Objectpop(): 出栈,并返回删除的数据元素;(4)ObjectgetTop(): 取堆栈当前栈顶的数据元素并返回;(5)利用Stack类实现一个方法: 输入一个正整数,输出该整数所对应的二进制数。 packageshiyaner6; publicclassStack{ publicObject[]array; publicintmaxLength; publicinttop; Stack(intmaxLength){ this.maxLength=maxLength; array=newObject[maxLength]; top=-1; } publicbooleanisEmpty(){ if(top==-1) returntrue; else returnfalse; } publicvoidpush(Objectobj){ if(top! =maxLength){ array[top+1]=obj; top++; } else return; } publicObjectpop(){ Objecte=null; if(top>-1){ e=array[top]; array[top]=null; top--; } returne; } publicObjectgetTop(){ Objecte=null; if(top>-1){ e=array[top]; } returne; } } **************************************************** packageshiyaner6; importjava.util.Scanner; publicclassmain{ publicstaticvoidmain(String[]args){ Stackstack=newStack(32); Scannerscan=newScanner(System.in); System.out.print("请输入一个正整数: "); intn=scan.nextInt(); //测试Stack类 stack.push(n); System.out.pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 复习资料