JAVA 实验二.docx
《JAVA 实验二.docx》由会员分享,可在线阅读,更多相关《JAVA 实验二.docx(17页珍藏版)》请在冰点文库上搜索。
![JAVA 实验二.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/fd9a5c2b-da5d-4bf9-bbeb-44d64eec38f6/fd9a5c2b-da5d-4bf9-bbeb-44d64eec38f61.gif)
JAVA实验二
Java实验二
姓名:
陈俊学号:
08113493班级:
计科11-6
1.编一程序,求两个正整数m、n的最大公约数。
要求程序中有两个方法,分别使用循环和递归,最后在主方法中两次求解并输出最大公约数。
提示:
用辗转相除法。
方法:
(1)求m除n的余数r;
(2)如果r为0,则n为最大公约数,结束。
否则转(3);
(3)用n置m,用r置n,回到
(1)。
packageshiyan2;
importjava.io.*;
publicclassgongyueshu{
intgys1(intm,intn){
intr;
for(;;){
r=m%n;
if(r==0)returnn;
else{m=n;n=r;}
}
}
intgys2(inta,intb){
if(b==0)returna;
elsereturngys2(b,a%b);
}
publicstaticvoidmain(Stringargs[])throwsIOException{
Stringnn1="";
BufferedReaderdistream=newBufferedReader(newInputStreamReader(System.in));
System.out.println("请输入一个整数m");
nn1=distream.readLine();
intm=Integer.parseInt(nn1);
System.out.println("再输入一个整数n");
nn1=distream.readLine();
intn=Integer.parseInt(nn1);
System.out.println("求两数的最大公约数--循环方法");
System.out.print("整数"+m+"和整数"+n+"的最大公约数是:
");
System.out.println(newgongyueshu().gys1(m,n));
System.out.println("求两数的最大公约数--递归方法");
System.out.print("整数"+m+"和整数"+n+"的最大公约数是:
");
System.out.println(newgongyueshu().gys2(m,n));
}
}
运行结果:
2.使用类编写程序(在程序中定义类,然后在主方法中创建类的对象,并调用该类中的方法,观察所得结果。
)
工具(Tool)类
属性:
名称,制造年份;
方法:
(1)构造方法用于设置属性的初始值;
(2)打印所有的属性;
(3)设置某些属性的值。
在主方法中创建Tool类的对象,并设置初值:
名称为“剪刀”,制造年份为2000后调用该类对象的方法来打印所有的属性;最后在修改该对象的名称(如改为“锤子”)和制造年份后再一次输出属性。
房子(House)类
属性:
名称,长度,宽度,高度;(长宽高均为整数)
方法:
(1)构造方法用于设置属性的初始值;
(2)打印所有的属性;
(3)设置某些属性的值。
在主方法中创建House类的对象,并设置初值如下:
名称为“普通房子”;长度为20,宽度为10,高度为3。
然后调用该对象的方法来输出属性;此后在修改该对象的名称(如改为“教室”)和宽度后再一次输出属性。
packageshiyan2;
classTool//定义一个工具类
{
privateStringname;
privateintyear;
publicTool(Stringname,intyear)
{
this.name=name;
this.year=year;
}
publicvoidsetname(Stringname)
{
this.name=name;
}
publicStringgetname()
{
returnname;
}
publicvoidsetyear(intyear)
{
this.year=year;
}
publicintgetyear()
{
returnyear;
}
publicvoidoutput()
{
System.out.println("工具的名称:
"+getname());
System.out.println("工具的制造年份:
"+getyear());
System.out.println();
}
}
classHouse//定义一个房子类
{
privateStringname;
privateintlength;
privateintwidth;
privateintheight;
publicHouse(Stringname,intlength,intwidth,intheight)
{
this.name=name;
this.length=length;
this.width=width;
this.height=height;
}
publicvoidsetname(Stringname)
{
this.name=name;
}
publicStringgetname()
{
returnname;
}
publicvoidsetlength(intlength)
{
this.length=length;
}
publicintgetlength()
{
returnlength;
}
publicvoidsetwidth(intwidth)
{
this.width=width;
}
publicintgetwidth()
{
returnwidth;
}
publicvoidsetheight(intheight)
{
this.height=height;
}
publicintgetheight()
{
returnheight;
}
publicvoidoutput()
{
System.out.println("房子的名称:
"+getname());
System.out.println("房子的长度:
"+getlength());
System.out.println("房子的宽度:
"+getwidth());
System.out.println("房子的高度:
"+getheight());
System.out.println();
}
}
publicclassDemo2{
publicstaticvoidmain(Stringargs[])
{
Tooltool;
tool=newTool("剪刀",2000);
tool.output();
tool.setname("锤子");
tool.setyear(2014);
System.out.println("修改后的tool属性值:
");
tool.output();
Househouse;
house=newHouse("普通房子",20,10,3);
house.output();
house.setname("公寓");
house.setwidth(30);
System.out.println("修改后的house属性值:
");
house.output();
}
}
运行结果:
5.编写一个程序,它含有一个圆类和圆柱类。
要求:
1)圆类:
3个属性(圆心坐标x,y;半径r);
构造方法(给3个属性赋值);
计算周长的方法(doublezc());
计算面积的方法(doublemj())。
2)圆柱类:
继承圆类,并加入一个属性h(高);
构造方法(给4个属性赋值);
计算面积的方法(doublemj());
计算体积的方法(doubletj())。
packageshiyan2;
publicclassyuan{
publicstaticvoidmain(String[]args){
circlec1;
c1=newcircle(1,2,3);
System.out.println("圆的周长为:
"+c1.zc());
System.out.println("圆的面积为:
"+c1.mj());
yuanzhuyz1;
yz1=newyuanzhu(1.1,2.2,3.3,4.4);
System.out.println("圆柱的底面积为:
"+yz1.zc());
System.out.println("圆柱的表面积为:
"+yz1.mj());
System.out.println("圆柱的体积为:
"+yz1.tj());
}
}
classcircle
{
staticfinaldoublePI=3.1415926;
doublex,y,r;
publiccircle(doublex,doubley,doubler)
{
this.x=x;
this.r=r;
this.y=y;
}
publicdoublezc(){return2*r*PI;}
publicdoublemj(){returnr*r*PI;}
}
classyuanzhuextendscircle
{
privatedoubleh;
publicyuanzhu(doublex,doubley,doubler,doubleh)
{
super(x,y,r);
this.h=h;
}
publicdoublemj()
{
return2*r*r*PI+2*r*PI*h;
}
publicdoubletj()
{
returnr*r*PI*h;
}
}
运行结果:
6.编写一个含有5个类的程序:
类Person:
属性:
编号、姓名、性别;
构造方法:
确定编号和姓名;
一般方法:
修改编号、姓名,获取编号、姓名。
类Teacher:
继承类Person并增加:
属性:
系别;
构造方法:
调用父类的构造方法;
一般方法:
修改、获取系别。
类Student:
继承类Person并增加:
属性:
班级;
构造方法:
调用父类的构造方法;
一般方法:
修改、获取班级属性值。
类Classes:
属性:
班级名称,学生名单(Student类的数组);
构造方法:
确定班级名称;
一般方法:
建立学生名单,输出学生名单。
类Main:
主类。
主方法中创建一个班级,然后建立该班级的学生名单,最后输出学生名单。
packageshiyan2;
classPerson
{
privateintnum;
privateStringname;
privateintage;
publicPerson(intnum,Stringname)
{
this.num=num;
this.name=name;
}
publicvoidsetnum(intnum)
{
this.num=num;
}
publicvoidsetname(Stringname)
{
this.name=name;
}
publicintgetnum()
{
returnnum;
}
publicStringgetname()
{
returnname;
}
}
classTeacherextendsPerson
{
privateStringdepartment;
publicTeacher(intnum,Stringname,Stringdepartment)
{
super(num,name);
this.department=department;
}
publicvoidsetdepartment(Stringdepartment)
{
this.department=department;
}
publicStringgetdepartment()
{
returndepartment;
}
}
classStudentextendsPerson
{
privateStringbanji;
publicStudent(intnum,Stringname,Stringbanji)
{
super(num,name);
this.banji=banji;
}
publicvoidsetbanji(Stringbanji)
{
this.banji=banji;
}
publicStringgetbanji()
{
returnbanji;
}
}
classClasses
{
Stringclassname;
Studentstudents[];
publicClasses(Stringclassname)
{
this.classname=classname;
}
publicvoidStudentsList()
{
System.out.println("建立学生名单并输出:
");
students=newStudent[4];
students[0]=newStudent(00001,"zhao","jike11-6");
students[1]=newStudent(00002,"qian","jike11-6");
students[2]=newStudent(00003,"sun","jike11-6");
students[3]=newStudent(00004,"li","jike11-6");
for(inti=0;i{
System.out.println("Theinformationofstudents"+(i+1)+":
");
System.out.println("num:
"+students[i].getnum());
System.out.println("name:
"+students[i].getname());
System.out.println("banji:
"+students[i].getbanji());
System.out.println();
}
}
}
publicclassjunshao{
publicstaticvoidmain(Stringargs[])
{
Classesclass1;
class1=newClasses("jike11-6");
class1.StudentsList();
}
}
运行结果:
阅读使人快乐,成长需要时间
111
123489
147
127
111
1234
189
156