java上机实验答案与解析.docx

上传人:b****5 文档编号:6649270 上传时间:2023-01-08 格式:DOCX 页数:22 大小:22.02KB
下载 相关 举报
java上机实验答案与解析.docx_第1页
第1页 / 共22页
java上机实验答案与解析.docx_第2页
第2页 / 共22页
java上机实验答案与解析.docx_第3页
第3页 / 共22页
java上机实验答案与解析.docx_第4页
第4页 / 共22页
java上机实验答案与解析.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

java上机实验答案与解析.docx

《java上机实验答案与解析.docx》由会员分享,可在线阅读,更多相关《java上机实验答案与解析.docx(22页珍藏版)》请在冰豆网上搜索。

java上机实验答案与解析.docx

java上机实验答案与解析

JAVA上机实验题答案与解析

实验一Java程序编程

1.编写一个Java应用程序,输出内容为Hello!

注:

文件位置位于e:

\2:

\Hello.java编译:

(1)e:

(2)cd2(3)javacHello.java(4)javaHello

2.编写一个Java小应用程序,输出内容为我一边听音乐,一边学Java。

第一步编写

importjava.awt.*;

importjava.applet.*;

publicclassMyAppletextendsApplet{

publicvoidpaint(Graphicsg){

g.drawString("我一边听音乐,我一边做java",25,25);

}

}

第二步在DOS环境中编译(....javacMyApplet.java)

第三步使用记事本编写

第四步将记事本文件名命名为MyApplet.html

第五步打开MyApplet.html

实验二类的定义

1.编写Java应用程序,自定义Point类,类中有两个描述坐标位置的double变量x,y,利用构造方法,实现对Point对象p1,p2初始化,p1和p2对应坐标分别为(15,20),(10,30);定义方法getX(),getY()分别获得点的横坐标和纵坐标;定义方法setX(),setY()分别获得点的横坐标和纵坐标;并且把p1和p2输出;

publicclassPoint{

doublex,y;

Point(doublex,doubley){

this.x=x;

this.y=y;

}

doublegetX(){

returnx;

}

doublegetY(){

returny;

}

voidsetX(doublex){

this.x=x;

}

voidsetY(doubley){

this.y=y;

}

publicstaticvoidmain(String[]args){

Pointp1=newPoint(15,20);//初始化

Pointp2=newPoint(10,30);

}

}

运行结果:

横坐标为15.0纵坐标为20.0

横坐标为10.0纵坐标为30.0

2.编写Java应用程序,自定义Circle类,类中有两个double变量r,s,一个类变量pi,利用构造方法实现对半径是3和5.5的初始化,自定义getArea方法实现圆面积求解;

publicclassCircle{

doubles,r;

publicCircle(doubler){

this.r=r;

}

doublegetArea(){

this.s=pi*r*r;

returns;

}

publicstaticvoidmain(String[]args){

Circlec1=newCircle(3);

Circlec2=newCircle(5.5);

Area());

Area());

}

}

实验三类的继承和多态性

1.

(1)编写一个接口ShapePara,要求:

接口中的方法:

intgetArea():

获得图形的面积。

intgetCircumference():

获得图形的周长

(2)编写一个圆类Circle,要求:

圆类Circle实现接口ShapePara。

该类包含有成员变量:

radius:

public修饰的double类型radius,表示圆的半径。

x:

private修饰的double型变量x,表示圆心的横坐标。

y:

protected修饰的double型变量y,表示圆心的纵坐标。

包含的方法有:

Circle(doubleradius)有参构造方法。

以形参表中的参数初始化半径,圆心为坐标原点。

doublegetRadius():

获取半径为方法的返回值。

voidsetCenter(doublex,doubley):

利用形参表中的参数设置类Circle的圆心坐标。

voidsetRadius(doubleradius):

利用形参表中的参数设置类Circle的radius域。

在主方法中产生半径为5的圆。

interfaceShapePara{

doublegetArea(doubler);

doublegetCircumference(doubler);

}//注:

Circle是在接口中建立的calss,即先建立接口,在建立接口的类

classCircleimplementsShapePara{

privatedoublex;

protecteddoubley;

publicdoubler;

Circle(doubler){

this.r=r;

}

voidsetRadius(doubler){

this.r=r;

}

doublegetRadius(){

returnr;

}

doublegetArea(){

return(3.14*r*r);

}

doublegetCircumference(){

return3.14*2*r;

}

voidsetCenter(doublex,doubley){

this.x=x;

this.y=y;

}

doublegetCenterx(){

returnx;

}

doublegetCentery(){

returny;

}

}

publicclassA{

publicstaticvoidmain(String[]args){

Circleci=newCircle(5);

ci.setRadius(5);

ci.setCenter(0,0);

}

}答案:

78.5

0.0

0.0

2.定义图形类Shape,该类中有获得面积的方法getArea();定义长方形类Rect,该类是Shape的子类,类中有矩形长和宽的变量doublea,doubleb,设置长和宽的方法setWidth()、setHeight(),使用getArea()求矩形面积;利用getArea方法实现题1中圆面积的求解。

classShape{

doublegetArea(doubler){

return0;

}

}

publicclassRectextendsShape{

doublea,b,area;

Rect(doublewidth,doubleheigh){

a=width;

b=height;;

}

voidsetWidth(doublewidth){

a=width;

}

voidsetHeight(doubleheight){

b=height;

}

doublegetWidth(){

returna;

}

doublegetHeight(){

returnb;

}

doublegetArea(){

area=a*b;

returnarea;

}

}

publicclassA{

publicstaticvoidmain(Stringargs[]){

Rectrect=newRect();

doublew=12.76,h=25.28;

rect.setWidth(w);

rect.setHeight(h);

}

}

答案:

圆的的面积:

78.5

矩形对象的宽:

12.76高:

25.28

3.编写Java应用程序,定义Animal类,此类中有动物的属性:

名称name,腿的数量legs,统计动物的数量count;方法:

设置动物腿数量的方法voidsetLegs(),获得腿数量的方法getLegs(),设置动物名称的方法setKind(),获得动物名称的方法getKind(),获得动物数量的方法getCount()。

定义Fish类,是Animal类的子类,统计鱼的数量count,获得鱼数量的方法getCount()。

定义Tiger类,是Animal类的子类,统计老虎的数量count,获得老虎数量的方法getCount()。

定义SouthEastTiger类,是Tiger类的子类,统计老虎的数量count,获得老虎数量的方法getCount()。

publicclassAnimal{

Stringname;

intlegs;

staticintcount;

Animal(){count++;}

voidsetLegs(intlegs){

this.legs=legs;

}

intgetLegs(){

returnlegs;

}

voidsetKind(Stringname){

this.name=name;

}

StringgetKind(){

returnname;

}

intgetCount(){

returncount;

}

}

publicclassFishextendsAnimal{

staticintcountFish;

Fish(){countFish++;}

intgetCount(){

returncountFish;

}

}

publicclassTigerextendsAnimal{

staticintcountTiger;

Tiger(){countTiger++;}

intgetCount(){

returncountTiger;

}

}

publicclassSouthEastTigerextendsTiger{}

publicclassA{

publicstaticvoidmain(Stringargs[]){

Fishf=newFish();

Tigert=newTiger();

SouthEastTigerst=newSouthEastTiger();

}

}

实验四异常处理

1.建立exception包,编写TestException.java程序,主方法中有以下代码,确定其中可能出现的异常,进行捕获处理。

for(inti=0;i<4;i++){

intk;

switch(i){

case0:

intzero=0;k=911/zero;break;

case1:

intb[]=null;k=b[0];break;

case2:

intc[]=newint[2];k=c[9];break;

case3:

charch="abc".charAt(99);break;

}

}

packageException;

publicclassTestException{

publicstaticvoidmain(String[]args){

for(inti=0;i<4;i++){

try{

intk;

switch(i){

case0:

intzero=0;k=911/zero;break;

case1:

intb[]=null;k=b[0];break;

case2:

intc[]=newint[2];k=c[9];break;

case3:

charch="abc".charAt(99);break;

}

}

catch(ArithmeticExceptione){

}

}

catch(ArrayIndexOutOfBoundsExceptione){

}

}

}

}

}

运行结果:

/byzero

null

9

Stringindexoutofrange:

99

2.建立exception包,建立Bank类,类中有变量doublebalance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(doubledAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如newBank(100),表示存入银行100元,当用方法withdrawal(150),withdrawal(-15)时会抛出自定义异常。

提示:

InsufficientFundsException,NagativeFundsException为自定义的类,分别产生余额不足异常和取款为负数异常,需继承Exception类。

通过输出结果了解java异常的产生,并将该Java程序放在exception包中。

packageException;//注解先建立一个package,然后在包中建立各种类

publicclassInsufficientFundsExceptionextendsException{

Strings1;

InsufficientFundsException(Stringt){

s1=t;

}

publicStringgetMassage1(){

returns1;

}

}

packageException;

publicclassNagativeFundsExceptionextendsException{

Strings;

NagativeFundsException(Stringt){

s=t;

}

publicStringgetMassage(){

returns;

}

}

packageException;

publicclassBankextendsException{

staticdoubleba=0;

Bank(doubler){

ba=ba+r;

}

voidwithDrawal(doubledAmount)throwsInsufficientFundsException,NagativeFundsException{

if(dAmount>ba)thrownewInsufficientFundsException("取款余额不足");

elseif(dAmount<0)thrownewNagativeFundsException("取款为负数");

else

}

}

packageException;

importjava.util.*;

publicclassA{

publicstaticvoidmain(Stringargs[]){

Bankb=newBank(100);

Scannersc=newScanner(System.in);

try{

b.withDrawal(sc.nextInt());

}

catch(InsufficientFundsExceptione){

}

catch(NagativeFundsExceptione){

}

}

}

运行结果:

请输入一个数

80

银行里还剩余:

20.0

实验五输入输出

1.编写TextRw.java的Java应用程序,程序完成的功能是:

首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。

importjava.io.*;

publicclassTextRw{

publicstaticvoidmain(String[]args)throwsIOException{

Filef=newFile("f:

\\TextRw.txt");

FileWriterfw=newFileWriter(f);

fw.write("学号姓名");

fw.close();

FileReaderfr=newFileReader(f);

inti;

while((i=fr.read())!

=-1)

fr.close();

}

}

2.编写IoDemo.java的Java应用程序,程序完成的功能是:

首先读取IoDemo.java源程序文件,再通过键盘输入文件的名称为iodemo.txt,把IoDemo.java的源程序存入

3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:

完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。

importjava.io.*;

publicclassBinIoDemo{

publicstaticvoidmain(String[]args)throwsIOException{

Filef1=newFile("e:

\\1.doc");

FileInputStreamin=newFileInputStream(f1);

Filef2=newFile("e:

\\“学号”+“姓名”.doc");

FileOutputStreamout=newFileOutputStream(f2);

byte[]buf=newbyte[2048];

intnum=in.read(buf);

while(num!

=(-1)){

out.write(buf,0,num);

out.flush();

num=in.read(buf);

}

in.close();

out.close();

}

}

实验六多线程编程

1.随便选择两个城市作为预选旅游目标。

实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。

分别用Runnable接口和Thread类实现。

通过Thread

publicclassHw1ThreadextendsThread{

Stringa;

privateintsleepTime;

publicHw1Thread(Stringa){

super(a);

this.a=a;

sleepTime=(int)(Math.random()*6000);

}

publicvoidrun(){

intcount1=0,count2=0;

if(Thread.currentThread().getName().equalsIgnoreCase("ShangHai")){

for(inti=0;i<10;i++){

try{

Thread.sleep(sleepTime);

count1++;

if(count1>count2&&count1==10){//判断哪个城市的输出次数先达到10,达到则终止输出

}

elseif(count2>count1&&count2==10){

}

}

catch(InterruptedExceptionexception){};//使用sleep方法需要抛出中断异常

}

}

if(Thread.currentThread().getName().equalsIgnoreCase("BeiJIng")){

for(inti=0;i<10;i++){

try{

Thread.sleep(sleepTime);

count2++;

if(count1>count2&&count1==10){

}

elseif(count2>count1&&count2==10){

}

}

catch(InterruptedExceptionexception){};//使用sleep方法需要抛出中断异常(也可以在方法头抛出(throw)异常)

}

}

}

}

publicclassHw1ThreadText{

publicstaticvoidmain(String[]args)throwsInterruptedException{

Hw1Threadtd1=newHw1Thread("ShangHai");

Hw1Threadtd2=newHw1Thread("BeiJing");

td1.start();

td2.start();

}

}

通过Runnable接口:

publicclassHw1ThreadimplementsRunnable{

Stringa;

privateintsleepTime;

intcount1=0,count2=0;

publicHw1Thread(Stringa){

this.a=a;

sleepTime=(int)(Math.random()*1000);

}

publicvoidrun(){//重写run方法

if(Thread.currentThread().getName().equalsIgnoreCase("td1")){

for(inti=0;i<10;i++){

try{

Thread.sleep(sleepTime);

count1++;

}

catch(InterruptedExceptionexception){};//使用sleep方法需要抛出中断异常

if(count1>count2&&count1==10){

}

elseif(count2>count1&&count2==10){

}

}

}

if(Thread.currentThread().getName().equalsIgnoreCase("td2")){

for(inti=0;i<10;i++){

try{

Thread.sleep(sleepTime);

count2++;

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

当前位置:首页 > 初中教育 > 语文

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

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