《最新java上机实验答案与解析.doc》由会员分享,可在线阅读,更多相关《最新java上机实验答案与解析.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品资料java上机实验答案与解析.JAVA上机实验题答案与解析实验一 Java程序编程1. 编写一个Java应用程序,输出内容为Hello!。注:文件位置位于e:2:Hello.java 编译:(1)e:(2)cd 2 (3)javac Hello.java(4)java Hello2.编写一个Java小应用程序,输出内容为我一边听音乐,一边学Java。第一步编写import java.awt.*;import java.applet.*;public class MyApplet extends Appletpublic void paint(Graphics g) g.drawStrin
2、g(我一边听音乐,我一边做java,25,25);第二步 在DOS环境中编译(.javac MyApplet.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输出;
3、public class Point double x,y;Point(double x,double y)this.x=x;this.y=y;double getX()return x;double getY()return y;void setX(double x)this.x=x;void setY(double y)this.y=y;public static void main(String args) Point p1=new Point(15,20);/初始化Point p2=new Point(10,30);System.out.println(横坐标为+p1.x+ 纵坐标为+
4、p1.y);System.out.println(横坐标为+p2.getX()+ 纵坐标为 +p2.getY();运行结果:横坐标为15.0 纵坐标为20.0横坐标为10.0 纵坐标为 30.02.编写Java应用程序,自定义Circle类,类中有两个double 变量r,s,一个类变量pi,利用构造方法实现对半径是3和5.5的初始化,自定义getArea方法实现圆面积求解;public class Circle double s,r;static double pi=3.14159265;public Circle(double r)this.r=r;double getArea()this
5、.s=pi*r*r;return s;public static void main(String args) Circle c1=new Circle(3); Circle c2=new Circle(5.5); System.out.println(c1.getArea (); System.out.println(c2.getArea();实验三 类的继承和多态性1.(1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积。int getCircumference():获得图形的周长(2)编写一个圆类Circle,要求:圆类Circle实现
6、接口ShapePara。该类包含有成员变量:radius:public 修饰的double类型radius,表示圆的半径。x:private修饰的double型变量x,表示圆心的横坐标。y:protected修饰的double型变量y,表示圆心的纵坐标。包含的方法有:Circle(double radius) 有参构造方法。以形参表中的参数初始化半径,圆心为坐标原点。 double getRadius():获取半径为方法的返回值。void setCenter(double x, double y):利用形参表中的参数设置类Circle的圆心坐标。void setRadius(double ra
7、dius):利用形参表中的参数设置类Circle的radius域。在主方法中产生半径为5的圆。 interface ShapePara double getArea(double r);double getCircumference(double r);/注: Circle是在接口中建立的calss,即先建立接口,在建立接口的类 class Circle implements ShapePara private double x;protected double y;public double r; Circle(double r)this.r=r;void setRadius(double
8、r)this.r=r;double getRadius()return r;double getArea()return (3.14*r*r);double getCircumference()return 3.14*2*r;void setCenter(double x,double y)this.x=x;this.y=y;double getCenterx()return x;double getCentery()return y;public class A public static void main(String args) Circle ci=new Circle(5);ci.s
9、etRadius(5);ci.setCenter(0, 0);System.out.println(ci.getArea();System.out.println(ci.getCircumference();System.out.println(ci.getCenterx();System.out.println(ci.getCentery();答案:78.531.4000000000000020.00.02.定义图形类Shape,该类中有获得面积的方法getArea();定义长方形类Rect,该类是Shape的子类,类中有矩形长和宽的变量double a,double b,设置长和宽的方法s
10、etWidth()、setHeight(),使用getArea()求矩形面积;利用getArea方法实现题1中圆面积的求解。class Shape double getArea(double r)return 0;public class Rect extends Shape double a,b,area; Rect(double width,double heigh)a=width;b=height; void setWidth(double width) a=width; void setHeight(double height) b=height; double getWidth()
11、return a; double getHeight() return b; double getArea() area=a*b; return area; public class A public static void main(String args) Rect rect=new Rect(); double w=12.76,h=25.28; rect.setWidth(w); rect.setHeight(h); System.out.println(矩形对象的宽:+rect.getWidth()+ 高:+rect.getHeight(); System.out.println(矩形
12、的面积:+rect.getArea(); 答案:圆的的面积:78.5矩形对象的宽:12.76 高:25.28矩形的面积:322.572800000000033. 编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,统计鱼的数量 count,获得鱼数量的方法 getCou
13、nt()。定义Tiger类,是Animal类的子类,统计老虎的数量 count,获得老虎数量的方法 getCount()。定义SouthEastTiger类,是Tiger类的子类,统计老虎的数量 count,获得老虎数量的方法 getCount()。public class Animal String name;int legs;static int count;Animal()count+;void setLegs(int legs)this.legs=legs;int getLegs()return legs;void setKind(String name)this.name=name;
14、String getKind()return name;int getCount()return count;public class Fish extends Animalstatic int countFish;Fish()countFish+;int getCount()return countFish;public class Tiger extends Animalstatic int countTiger;Tiger()countTiger+;int getCount()return countTiger;public class SouthEastTiger extends Ti
15、gerpublic class A public static void main(String args)Fish f=new Fish();System.out.println(f.getCount();Tiger t=new Tiger();System.out.println(t.getCount();SouthEastTiger st=new SouthEastTiger();System.out.println(st.getCount();实验四 异常处理1.建立exception包,编写TestException.java程序,主方法中有以下代码,确定其中可能出现的异常,进行捕获
16、处理。for(inti=0;i4;i+)intk;switch(i)case0:intzero=0;k=911/zero;break;case1:intb=null;k?=b0;break;case2:int c=new int2;k=c9;break;case3:charch=abc.charAt(99);break;package Exception;public class TestException public static void main(String args)for(int i=0;iba) throw new InsufficientFundsException(取款余额
17、不足); else if(dAmount0) throw new NagativeFundsException(取款为负数); else System.out.print(银行里还剩余:+(ba-dAmount); package Exception;import java.util.*;public class A public static void main(String args )Bank b=new Bank(100);Scanner sc=new Scanner(System.in);try System.out.println(请输入一个数);b.withDrawal(sc.n
18、extInt();catch(InsufficientFundsException e)System.out.println(e.getMassage1();catch(NagativeFundsException e)System.out.println(e.getMassage(); 运行结果:请输入一个数80银行里还剩余:20.0实验五 输入输出1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。import java.io.*;public class TextRw pu
19、blic static void main(String args) throws IOException File f=new File(f:TextRw.txt);FileWriter fw=new FileWriter(f);fw.write(学号 姓名);fw.close();FileReader fr=new FileReader(f);int i;while(i=fr.read()!=-1)System.out.print(char)i);fr.close();2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取IoDemo.java源程序文件,再通过键盘输
20、入文件的名称为iodemo.txt,把IoDemo.java的源程序存入import java.io.*;public class TextRw public static void main(String args) throws IOException String f=e:hello.java; FileReader r=new FileReader(f); int i; while(i=r.read()!=-1) System.out.print(char)i); r.close(); BufferedReader w=new BufferedReader(new InputStrea
21、mReader(System.in); System.out.print(请目录和输入文本名); String f1=w.readLine(); FileWriter w1=new FileWriter(f1); FileReader r1=new FileReader(f); int j; while(j=r1.read()!=-1) w1.write(char)j); w1.close(); 运行结果:public class Hellopublic static void main(String args)System.out.println(hello);请目录和输入文本名e:Hell
22、o.text且会在e目录下产生Hello.text3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。import java.io.*;public class BinIoDemo public static void main(String args) throws IOException File f1=new File(e:1.doc); FileInputStream in=new FileInputStream(f1); File f2 = new File(e:“学号”+“姓名”.doc)
23、; FileOutputStream out=new FileOutputStream(f2); byte buf = new byte2048; int num = 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接口
24、和Thread类实现。通过Threadpublic class Hw1Thread extends ThreadString a;private int sleepTime;public Hw1Thread(String a)super(a);this.a=a;sleepTime=(int)(Math.random()*6000);public void run()int count1=0,count2=0;if(Thread.currentThread().getName().equalsIgnoreCase(ShangHai)for(int i=0;icount2 & count1=10)
25、/判断哪个城市的输出次数先达到10,达到则终止输出System.out.println(I decide to go to shanghai!);break;else if(count2count1 & count2=10)System.out.println(I decide to go to BeiJing!);break;/判断哪个城市的输出次数先达到10,达到则终止输出catch(InterruptedException exception);/使用sleep方法需要抛出中断异常if(Thread.currentThread().getName().equalsIgnoreCase(B
26、eiJIng)for(int i=0;icount2 & count1=10)System.out.println(I decide to go to shanghai!);break;else if(count2count1 & count2=10)System.out.println(I decide to go to BeiJing!);break;catch(InterruptedException exception);/使用sleep方法需要抛出中断异常(也可以在方法头抛出(throw)异常)public class Hw1ThreadText public static void
27、 main(String args) throws InterruptedException Hw1Thread td1=new Hw1Thread(ShangHai);Hw1Thread td2=new Hw1Thread(BeiJing);td1.start();td2.start();通过Runnable接口:public class Hw1Thread implements RunnableString a;private int sleepTime;int count1=0,count2=0;public Hw1Thread(String a)this.a=a;sleepTime=(
28、int)(Math.random()*1000);public void run()/重写run方法if(Thread.currentThread().getName().equalsIgnoreCase(td1)for(int i=0;icount2 & count1=10)System.out.println(I decide to go to BeiJing!);break;else if(count2count1 & count2=10)System.out.println(I decide to go to ShangHai!);break;if(Thread.currentThre
29、ad().getName().equalsIgnoreCase(td2)for(int i=0;icount2 & count1=10)/判断哪个城市的输出次数先达到10,达到则终止输出System.out.println(I decide to go to shanghai!);break;else if(count2count1 & count2=10)System.out.println(I decide to go to BeiJing!);break;/判断哪个城市的输出次数先达到10,达到则终止输出catch(InterruptedException exception);/使用s
30、leep方法需要抛出中断异常public class Hw1ThreadText public static void main(String args) throws InterruptedException Hw1Thread td1=new Hw1Thread(ShangHai);Hw1Thread td2=new Hw1Thread(BeiJing);new Thread(td1,td1).start();new Thread(td2,td2).start();2.用继承Thread类方法实现多线程程序。有两个学生小明和小红,小明准备睡10分钟以后开始听课,小红准备睡1小时以后开始听课
31、,雷老师大喊三声“上课了”,小明醒后把小红吵醒,他们开始听课。学生:小明、小红睡觉:明:10min 红:60min老师:喊三声明醒-红醒。上课。class Stu extends Thread Thread student1,student2,teacher; Stu() teacher=new Thread(this); student1=new Thread(this); student2=new Thread(this); teacher.setName(雷老师); student1.setName(小明); student2.setName(小红); public void run()
32、 if(Thread.currentThread()=student1) try System.out.println(student1.getName()+正在睡觉); Thread.sleep(1000*60*10); catch(InterruptedException e) System.out.println(student1.getName()+被老师叫醒了); System.out.println(student1.getName()+开始听课); if(Thread.currentThread()=student2) try System.out.println(student
33、2.getName()+正在睡觉); Thread.sleep(1000*60*60); catch(InterruptedException e) System.out.println(student2.getName()+被小明叫醒了); System.out.println(student2.getName()+开始听课); else if(Thread.currentThread()=teacher) for(int i=1;i=3;i+) System.out.println(上课!); try Thread.sleep(500); catch(InterruptedException e) student1.interrupt(); /吵醒student student2.interrupt(); public class A public static void main(String args) Stu s=new Stu(); s.student1.start();