java实验答案解读.docx
《java实验答案解读.docx》由会员分享,可在线阅读,更多相关《java实验答案解读.docx(29页珍藏版)》请在冰豆网上搜索。
java实验答案解读
实验一
水仙花数:
classshuixianhua
{//水仙花数
publicstaticvoidmain(Stringarg[])
{
inti,a,a1,b,b1,c;
for(i=100;i<1000;i++)
{
a=i%10;
a1=i/10;
b=a1%10;
b1=a1/10;
c=b1%10;
if(i==(a*a*a+b*b*b+c*c*c))
System.out.println(i);
}
}
}
输出如下:
153
370
371
407
打印出100以内素数:
publicclasssushu{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
inti,j,k=0;
for(i=2;i<100;i++){
if(i==2)
System.out.println(i);
i++;
for(j=2;j
{
if(i%j!
=0)
k=1;
}
if(k==1)
System.out.println(i);
}
}
求1!
+2!
+……+20!
publicclassjiecheng{
publicstaticvoidmain(String[]args){
inti,sum=0,k;
for(i=1;i<=20;i++)
{
k=ji(i);
sum=k+sum;
}
System.out.print(sum);
}
staticintji(intn)
{
if(n==1)
return1;
else
returnji(n-1)*n;
}
}
习题2.6
publicclassTest{
publicstaticvoidmain(String[]args)//第19题,打出图形.菱形
{
intn=3;
for(inti=1;i<=n;i++)
{
for(intk=n-1;k>=i;k--)
{
System.out.print("");
}
for(intj=1;j<=2*i-1;j++)//打印*
{
System.out.print("*");
}
System.out.println();
}
}
}
编写程序,命令行窗口输出希腊字母表。
(希腊字母表开始为α,最后一个为ω)
importjava.applet.*;
importjava.awt.*;
publicclassmyappletextendsApplet
{
publicvoidpaint(Graphicsg)
{
Stringstr="";
for(chara='α';a<'ω';a++)
{
str+=a;
}
g.drawString(str,2,10);
}
}
实验二
设计一个名为figure的图形软件包(package)。
包中包含三角形、矩形、圆三个类。
要求:
(1)每个类都要构造方法并为成员设置get和set方法;
(2)每个类都要有计算周长和面积的成员方法;(3)完成该软件包后的编码后,在另一个包的含有main方法的类中编写代码,分别使用图形软件包中的三个类,生成三个对象,并打印出其周长和面积。
Triangle.java
packagefigure;
publicclassTriangle
{
privatedoublea,b,c;
publicTriangle(doublex,doubley,doublez)
{
a=x;
b=y;
c=z;
}
publicvoidget()
{
}
publicvoidset(doublex,doubley,doublez)
{
a=x;
b=y;
c=z;
}
publicdoublePerimeter()
{
doubleper=a+b+c;
returnper;
}
publicdoubleArea()
{
doublearea=0;
doublep=(a+b+c)/2;
doubles=p*(p-a)*(p-b)*(p-c);
area=(double)Math.sqrt(s);
returnarea;
}
}
Rectangle.java
packagefigure;
publicclassRectangle
{
privatedoublelength;
privatedoublewidth;
publicRectangle(doublel,doublew)
{
length=l;
width=w;
}
publicvoidget()
{
}
publicvoidset(doublel,doublew)
{
length=l;
width=w;
}
publicdoublePerimeter()
{
doubleper=2*(length+width);
returnper;
}
publicdoubleArea()
{
doublearea=length*width;
returnarea;
}
}
Circle.java
packagefigure;
publicclassCircle
{
privatedoubler;
privatedoublePI=3.14;
publicCircle(doublex)
{
r=x;
}
publicdoubleget()
{
returnr;
}
publicvoidset(doublex)
{
r=x;
}
publicdoublePerimeter()
{
doubleper=2*(PI*r);
returnper;
}
publicdoubleArea()
{
doublearea=PI*(double)Math.pow(r,2);
returnarea;
}
}
figureTest.java
packageTest;
importfigure.Circle;
importfigure.Rectangle;
importfigure.Triangle;
publicclassfigureTest
{
publicstaticvoidmain(String[]args)
{
Circlec=newCircle(3.2);
System.out.println(c.Area());
System.out.println(c.Perimeter());
Rectangler=newRectangle(3,4);
System.out.println(r.Area());
System.out.println(r.Perimeter());
Trianglet=newTriangle(3,4,4);
System.out.println(t.Area());
System.out.println(t.Perimeter());
}
}
编写类Factorial,为其添加两个静态方法(方法名自定义)。
其中一个使用递归计算n的阶乘,一个使用非递归计算n的阶乘。
构造main方法进行测试。
publicclassFac{
publicstaticvoidmain(String[]args){
intn=5;
longfac=digui(n);
longfac2=nonDigui(n);
}
//循环方法
privatestaticlongnonDigui(intn){
longfac=1L;
for(inti=1;i<=n;i++){
fac=fac*i;
}
returnfac;
}
//递归
privatestaticlongdigui(intn){
if(n==1){
return1;
}
returnn*digui(n-1);
}
}
按照要求使用Java进行编码。
1)设计一个教师类Teacher,属性有编号(no)、姓名(name)、年龄(age)、所属学院(seminary),为这些属性设置相应的get和set方法;
2)为Teacher类添加方法equals;(当两个教师对象的no相同时返回true)
3)为Teacher类添加方法toString,通过该方法可以返回“编号为**、姓名为**、年龄为**的**学院老师”形式的字符串。
4)构造main方法进行测试。
Teacher.java
publicclassTeacher{
publicstaticintnum;
publicintno;
publicStringname;
publicintage;
publicStringseminary;
publicTeacher(){
super();
}
publicTeacher(intno,Stringname,intage,Stringseminary){
super();
this.no=no;
this.name=name;
this.age=age;
this.seminary=seminary;
}
publicstaticintgetNum(){
returnnum;
}
publicstaticvoidsetNum(intnum){
Teacher.num=num;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetNo(){
returnno;
}
publicvoidsetNo(intno){
this.no=no;
}
publicStringgetSeminary(){
returnseminary;
}
publicvoidsetSeminary(Stringseminary){
this.seminary=seminary;
}
publicbooleanequals(ObjectotherObject){
if(otherObject==null)
returnfalse;
if(getClass()!
=otherObject.getClass())
returnfalse;
Teacherother=(Teacher)otherObject;
returnno==other.no;
}
publicStringtoString(){
return"编号:
"+getNo()+"姓名:
"+getName()+"年龄:
"+getAge()+"学院老师:
"+getSeminary();
}
}
---------------------------------------
TestTeacher.java
publicclassTestTeacher{
publicstaticvoidmain(String[]args){
Teachert1=newTeacher(1,"zhangsan",43,"计算机");
System.out.println(t1.getNo());
System.out.println(t1.getName());
System.out.println(t1.getAge());
System.out.println(t1.getSeminary());
System.out.println("t1.toString():
"+t1);
t1.setName("wangwu");
t1.setAge(50);
t1.setSeminary("国际经贸");
System.out.println(t1.getNo());
System.out.println(t1.getName());
System.out.println(t1.getAge());
System.out.println(t1.getSeminary());
Teacher.setNum(Teacher.getNum()+1);
System.out.println(Teacher.getNum());
Teachert2=newTeacher(2,"lisi",44,"经管");
Teacher.setNum(Teacher.getNum()+1);
System.out.println(Teacher.getNum());
Teachert3=newTeacher(3,"zhouwu",45,"信息");
Teacher.setNum(Teacher.getNum()+1);
System.out.println(Teacher.getNum());
System.out.println(t2)
}
}
设计一个带表头的单链表(链表中的元素属于同一类型对象,但对象的类型可以随意),提供以下操作:
(1)insert:
在某个位置插入对象;
(2)delete:
在某个位置删除对象;(3)delete:
删除链表中与x相同的元素;(4)size:
返回当前链表中对象的个数;(5)isEmpty:
判断链表是否为空;(6)traverse:
遍历链表,打印出所有的元素;(7)getData:
取得某个位置的对象。
构造main函数进行测试。
publicclassCode{
privateintdata;
privateCodenext;
publicintgetData(){
returndata;
}
publicvoidsetData(intdata){
this.data=data;
}
publicCodegetNext(){
returnnext;
}
publicvoidsetNext(Codenext){
this.next=next;
}
}
publicclassList{
publicCodehead;
List()
{
this.head=newCode();
head.setData(0);
}
List(intn)
{
this.head=newCode();
Codep,temp;
p=head;
for(inti=0;i{
temp=newCode();
temp.setData(i+1);
p.setNext(temp);
p=p.getNext();
}
head.setData(n);
}
//判断是否为空
publicvoidIsEmptyList()
{
if(this.head==NULL)
System.out.println("空链表");
else
System.out.println("非空");
}
PublicvoidI
//遍历节点
publicvoidTraverseList()
{
intSize=0;
Codetemp;
temp=head;
while(temp.getNext()!
=null)
{
Size++;
temp=temp.getNext();
System.out.println(temp.getData());
System.out.println(Size);
}
}
//删除节点
publicvoidDeleteCode(intn)
{
if(n>head.getData()){
System.out.println("找不到第"+n+"个节点");
return;
}
Codetemp;
temp=head;
for(inti=0;i{
temp=temp.getNext();
}
temp.setNext(temp.getNext().getNext());
head.setData(head.getData()-1);
}
//插入节点
publicvoidInsertCode(intn,intd)
{
if(n>head.getData()+1){
System.out.println("找不到第"+n+"个节点");
return;
}
Codep=newCode();
p.setData(d);
Codetemp;
temp=head;
for(inti=0;i{
temp=temp.getNext();
}
p.setNext(temp.getNext());
temp.setNext(p);
}
publicstaticvoidmain(Stringargs[])
{
Listl=newList(5);
l.rList();
l.iCode(3,8);
l.rList();
l.dCode(4);
l.rList();
}
}
实验三
1、按照要求使用Java进行编码。
1)编写一个抽象类Shape,其中有抽象方法getArea()和getPerimeter()
2)在Shape类的基础上派生出Rectangle和Circle类,二者都实现了计算面积的方法getArea()和计算周长的方法getPerimeter();
构造main函数,生成Rectangle和Circle对象,并用Shape类型的变量调用Rectangle和Circle对象的getArea()和getPerim()方法。
Shape.Java
importjava.io.*;
publicclassShape{
/**
*@paramargs
*@author
*@dateDec4
*/
publicstaticvoidmain(String[]args)throwsIOException{
floatradius;//定义圆的周长
floata,b,c;//定义三角形的三边长
floatw,h;//定义矩形的宽和长
intselect;//功能选项序号
BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));
Stringstr;
Graphicsgp;
while(true)//控制程序循环
{
PrintMenu();
while(true)
{
str=buf.readLine();
try{
if(str.length()>1||str.charAt(0)>52||str.charAt(0)<48)
{
System.out.print("输入不合法!
请输入(0-3)的整数:
");
continue;
}
select=Integer.parseInt(str);
while(select>3||select<0)
{
System.out.print("输入不合法!
请输入(0-3)的整数:
");
continue;
}
break;
}
catch(Exceptionne)
{
System.out.print("输入的不是(0-3)之间的整数,请重新输入:
");
continue;
}
}
switch(select)//处理用户要执行的功能
{
case1:
//处理圆的情况
System.out.println("请输入圆的半径:
");
while(true)
{
try{
str=buf.readLine();
radius=Float.parseFloat(str);
//Circlecircle=newCircle(radius);
if(radius<=0)
{
System.out.print("圆的半径应为大于0的实数,请重新输入圆的半径:
");
continue;
}
System.out.println("圆的半径为:
"+radius);
gp=newCircle(radius);
gp.area();
gp.perimeter();
break;//退出循环
}
catch(NumberFormatExceptionne)
{
System.out.println("输入的数据不合要求!
\n请重新输入圆的半径:
");
continue;
}
}
break;
case2:
//