JAVA实验2复习.docx

上传人:b****5 文档编号:3626840 上传时间:2022-11-24 格式:DOCX 页数:26 大小:21.33KB
下载 相关 举报
JAVA实验2复习.docx_第1页
第1页 / 共26页
JAVA实验2复习.docx_第2页
第2页 / 共26页
JAVA实验2复习.docx_第3页
第3页 / 共26页
JAVA实验2复习.docx_第4页
第4页 / 共26页
JAVA实验2复习.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

JAVA实验2复习.docx

《JAVA实验2复习.docx》由会员分享,可在线阅读,更多相关《JAVA实验2复习.docx(26页珍藏版)》请在冰豆网上搜索。

JAVA实验2复习.docx

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.print

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1