java上机实验答案与解析_第1页
java上机实验答案与解析_第2页
java上机实验答案与解析_第3页
java上机实验答案与解析_第4页
java上机实验答案与解析_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA上机实验题答案与解析实验一 Java程序编程1. 编写一个Java应用程序,输出内容为Hello!。编译:(1)e:(2)cd 2 (3)javac注:文件位置位于 e:2:Hello.javaHello.java(4)java HelloJava。2.编写一个Java小应用程序,输出内容为我一边听音乐,一边学第一步编写import java.awt.*;import java.a pp let.*;p ublic class MyApp let exte nds App letp ublic void pain t(Gra phics g)g.drawStri ng(”我一边听音乐,

2、我一边做java",25,25);第二步第三步使用记事本编写在 DOS环境中 编译(.javac MyApplet.java )vapp let code二MyA pp let.class height=200 width=120> </a pp let>第四步将记事本文件名命名为 MyApp let.html第五步打幵 MyApplet.html类的定义实验二1.编写Java应用程序,自定义Point类,类中有两个描述坐标位置的 double变量x,y, 利用构造方法,实现对Point对象p1,p2初始化,p1和p2对应坐标分别为(15,20) ,(10,30)

3、;定义方法 getX(),getY() 分别获得点的横坐标和纵坐标;定义方法 setX(),setY() 分 别获得点的横坐标和纵坐标;并且把 p1和p2输出;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=ne

4、w Point(15,20);/ 初始化Point p2=new Point(10,30);运行结果:横坐标为15.0 纵坐标为20.0横坐标为10.0纵坐标为 30.02. 编写Java应用程序,自定义Circle类,类中有两个 利用构造方法实现对半径是3和5.5的初始化,自定义 p ublic class Circle double s,r;p ublic Circle(double r)this.r二r;double get Area ()this.s 二p i*r*r;return s;p ublic static void main( Stri ng args) Circle c1二

5、new Circle(3);Circle c2=new Circle(5.5);Area ();Area();实验三类的继承和多态性1.(1)编写一个接口 ShapePara,要求: 接口中的方法:double 变量r,s, 一个类变量 pi,getArea方法实现圆面积求解;in t getAreaO:获得图形的面积。int getCircumference():获得图形的周长(2) 编写一个圆类 Circle ,要求:圆类 Circle 实现接口 ShapePara。 该类包含有成员变量:radius:public 修饰的 double 类型 radius, 表示圆的半径。x: priva

6、te 修饰的double型变量x,表示圆心的横坐标。y: Protected 修饰的double型变量y,表示圆心的纵坐标。包含的方法有:Circle(double radius) 有参构造方法。 以形参表中的参数初始化半径, 圆心为坐标原点。 double getRadius() :获取半径为方法的返回值。 void setCenter(double x, double y) : 利用形参表中的参数设置类 Circle 的圆心坐标。 void setRadius(double radius) :利用 形参表中的参数设置类 Circle 的 radius 域。在主方法中产生半径为 5 的圆。i

7、nterface ShapePara double getArea(double r);double getCircumference(double r);/ 注: Circle 是在接口中建立的 calss ,即先建立接口,在建立接口的类class Circle implements ShapeParaprivate double x;protected double y;public double r;Circle(double r)this.r=r;void setRadius(double r)this.r=r;double getRadius()return r;double get

8、Area()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.setRadius(5);ci.setCenter(0, 0); 答案: 78.5 0.0 0.0

9、2.定义图形类Shape,该类中有获得面积的方法 getAreaO ;定义长方形类Rect,该类是 Shape 的子类,类中有矩形长和宽的变量 double a,double b ,设置长和宽的方法 setWidth() 、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=w

10、idth;b=height;void setWidth(double width) a=width;void setHeight(double height) b=height;double getWidth()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.se

11、tHeight(h);答案: 圆的的面积: 78.5矩形对象的宽: 12.76 高: 25.283. 编写 Java 应用程序,定义 Animal 类,此类中有动物的属性: 名称 name, 腿的数量 legs , 统计动物的数量 count; 方法:设置动物腿数量的方法 void setLegs(), 获得腿数量的方法 getLegs(), 设置动物名称的方法 setKind(), 获得动物名称的方法 getKind(), 获得动 物数量的方法 getCount() 。定义 Fish 类,是 Animal 类的子类,统计鱼的数量 count, 获 得鱼数量的方法 getCount() 。定义

12、 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)

13、=name;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 exte

14、nds Tiger public class A public static void main(String args)Fish f=new Fish();Tiger t=new Tiger();SouthEastTiger st=new SouthEastTiger();实验四 异常处理1. 建立 exception 包 , 编写 TestException.java 程序,主方法中有以下代码,确定其中可 能出现的异常,进行捕获处理。for(inti=0;i<4;i+)intk;switch(i)case0:intzero=0;k=911/zero;break;case1:intb=

15、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;i<4;i+)tryint k;switch(i) case 0: int zero=0;k=911/zero;break;case 1: int b=null;k=b0;break;case 2: int c=new

16、int2;k=c9;break;case 3: char ch="abc".charAt(99);break;catch(ArithmeticException e) catch(ArrayIndexOutOfBoundsException e)运行结果:/ by zero nullString index out of range: 992. 建立 exception 包,建立 Bank 类,类中有变量 double balance 表示存款 ,Bank 类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数 额

17、大于 存款 时, 抛出 InsufficientFundsException, 取 款 数额为 负数, 抛出NagativeFundsException, 如 new Bank(100), 表 示 存 入 银 行 withdrawal(150) ,withdrawal(-15) 时会抛出自定义异常。为自定义的类 , 分别100 元 , 当 用 方 法提示 : InsufficientFundsException,NagativeFundsException产生余额不足异常和取款为负数异常 , 需继承 Exception 类。通过输出结果了解 java 异常的产生,并将该 Java 程序放在 e

18、xception 包中。package Exception;/ 注解先建立一个 package, 然后在包中建立各种类public class InsufficientFundsException extends ExceptionString s1;InsufficientFundsException(String t)s1=t;public String getMassage1()return s1;package Exception;public class NagativeFundsException extends ExceptionString s;NagativeFundsExc

19、eption(String t)s=t;public String getMassage()return s;package Exception;public class Bank extends Exceptionstatic double ba=0;Bank(double r)ba=ba+r;voidwithDrawal(doubledAmount)throwsInsufficientFundsException,NagativeFundsException取款余额不取款为负数if(dAmount>ba) throw new InsufficientFundsException(&q

20、uot;足");else if(dAmount<0) throw new NagativeFundsException("");elsepackage Exception;import java.util.*;public class Apublic static void main(String args )Bank b=new Bank(100);Scanner sc=new Scanner(System.in);try b.withDrawal(sc.nextInt();catch(InsufficientFundsException e)catch(

21、NagativeFundsException e)运行结果: 请输入一个数80银行里还剩余: 20.0实验五 输入输出1. 编写 TextRw.java 的 Java 应用程序,程序完成的功能是:首先向 TextRw.txt 中写入自 己的学号和姓名,读取 TextRw.txt 中信息并将其显示在屏幕上。import java.io.*;public class TextRw public static void main(String args) throws IOException File f=new File("f:TextRw.txt");FileWriter f

22、w=new FileWriter(f);fw.write(" 学号 姓名 ");fw.close();FileReader fr=new FileReader(f);int i;while(i=fr.read()!=-1) fr.close();IoDemo.java 源程 的源程序存入1.doc 文件的复制,2. 编写 IoDemo.java 的 Java 应用程序,程序完成的功能是:首先读取 序文件,再通过键盘输入文件的名称为 iodemo.txt, 把 IoDemo.java3. 编写 BinIoDemo.java 的 Java 应用程序,程序完成的功能是:完成 复制

23、以后的文件的名称为自己的学号姓名 .doc 。import java.io.*;public class BinIoDemo public static void main(String args) throws IOExceptionFile f1=new File("e:1.doc");FileInputStream in=new FileInputStream(f1);学号” +“姓名” .doc");FileOutputStream out=new FileOutputStream(f2);byte buf = new byte2048;int num =

24、 in.read(buf);while (num != (-1) out.write(buf, 0, num);out.flush();num = in.read(buf);in.close();out.close();实验六 多线程编程10 次城市名,每1. 随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示 次显示后休眠一段随机时间 (1000ms 以内) ,哪个先显示完毕, 就决定去哪个城市。 分别用 Runnable 接口和 Thread 类实现。通过 Thread public class Hw1Thread extends ThreadString a;private i

25、nt 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;i<10;i+)tryThread.sleep(sleepTime);/ 判断哪个count1+;if(count1>count2 &&

26、 count1=10)城市的输出次数先达到 10,达到则终止输出else if(count2>count1 && count2=10)catch(InterruptedException exception);/ 使用 sleep 方法需要抛出中断异常if(Thread.currentThread().getName().equalsIgnoreCase("BeiJIng")for(int i=0;i<10;i+)tryThread.sleep(sleepTime);count2+;if(count1>count2 && c

27、ount1=10) else if(count2>count1 && count2=10)catch(InterruptedException exception);/ 使用 sleep 方法需要抛出中断异常 (也可以在方法头抛出( throw )异常)public class Hw1ThreadText public static void main(String args) throws InterruptedException Hw1Thread td1=new Hw1Thread("ShangHai");Hw1Thread td2=new Hw

28、1Thread("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=(int)(Math.random()*1000);public void run()/ 重写 run 方法if(Thread.currentThread().getName().e

29、qualsIgnoreCase("td1")for(int i=0;i<10;i+)tryThread.sleep(sleepTime);count1+;catch(InterruptedException exception);/ 使 用sleep 方法需要抛出中断异常if(count1>count2 && count1=10)else if(count2>count1 && count2=10)if(Thread.currentThread().getName().equalsIgnoreCase("td2&q

30、uot;)for(int i=0;i<10;i+)tryThread.sleep(sleepTime);count2+;if(count1>count2 && count1=10)/ 判断哪个城市的输出次数先达到 10,达到则终止输出else if(count2>count1 && count2=10)抛出中断异常catch(InterruptedException exception);/使用 sleep 方法需要public class Hw1ThreadText public static void main(String args) t

31、hrows 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 小时以后开始听课,雷老师大喊三声“上课了” ,小明醒后把 小红吵醒,他

32、们开始听课。学生:小明、小红睡觉:明: 10min 红: 60min老师:喊三声明醒 -红醒。上课。class Stu extends ThreadThread student1,student2,teacher;Stu() teacher=new Thread(this);student1=new Thread(this);student2=new Thread(this);teacher.setName("雷老师 ");student1.setName("小明");student2.setName("小红 ");public vo

33、id run() if(Thread.currentThread()=student1) Thread.sleep(1000*60*10);catch(InterruptedException e) if(Thread.currentThread()=student2) Thread.sleep(1000*60*60);catch(InterruptedException e) else if(Thread.currentThread()=teacher) for(int i=1;i<=3;i+) try Thread.sleep(500);catch(InterruptedExcept

34、ion e)errupt(); /吵醒 errupt();public class Apublic static void main(String args) Stu s=new Stu();实验七 图像用户界面1. 编程实现如下界面:当在第一个文本框中输入直接回车,会在第二个文本框中得第一 个文本框输入值的平方,单击求和,会在第二个文本框中得到两个文本框中的和。import java.awt.*;public class Test implements ActionListenerTextField tf,tf1;Button b

35、;Frame f;Test()f=new Frame();f.setSize(150, 150);f.setLocation(300, 300);Panel p1=new Panel();Panel p=new Panel();Panel p2=new Panel();tf=new TextField(10);tf1=new TextField(10);b=new Button(" 求和 ");p.add(tf);p1.add(tf1);p2.add(b);f.add(p,BorderLayout.NORTH);f.add(p1,BorderLayout.CENTER);f

36、.add(p2,BorderLayout.SOUTH);f.setVisible(true);f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););tf.addActionListener(this);b.addActionListener(this);public static void main(String args) new Test();public void actionPerformed(ActionEvent e) int i;if(e.ge

37、tSource()=tf)i=Integer.parseInt(tf.getText();tf1.setText(String.valueOf(i*i);else if(e.getSource()=b)i=Integer.parseInt(tf.getText()+Integer.parseInt(tf1.getText();tf1.setText(String.valueOf(i);2按照如下图所示的窗体布局,其中包含 Label , TextField ,Button 控件, Label 控件 的名称为 l1,l2,l3,l4,l5;TextField的大小为 10,Button 控件的名

38、称如图所示。所完成的功能是:单击关闭按钮能够关闭窗体;单击“计算”按钮,将得出 1 号商品和 2号商品 的费用并显示在合计文本框中;输入 1号商品的价格,如果 2 号商品的价格和 1号商品价 格相同,在 1 号商品显示价格控件中回车, 2号商品的价格显示和 1 号商品相同;输入 1 号商品的数量,如果 2 号商品的数量和 1号商品数量相同,在 1 号商品显示数量控件中回 车,2 号商品的数量和 1号商品数量相同。import java.awt.*;public class Price public Price()Frame f=new Frame("商品计费 ");Labe

39、l l1=new Label("1号商品价格 ");Label l2=new Label("数量");Label l5=new Label("合计 ");/ 创建标签Label l3=new Label("2号商品价格 ");Label l4=new Label("数量");Button b=new Button(" 计算 ");/ 创建按钮final TextField tf1=new TextField(10);finalTextFieldtf2=newTextField

40、(10);final TextField tf3=new TextField(10);finalTextFieldtf4=newTextField(10);/ 文本框final TextField tf5=new TextField(10);Panel p1=new Panel();Panel p2=new Panel();Panel p3=new Panel();p1.add(l1);p1.add(tf1);p1.add(l2);p1.add(tf2);p2.add(l3);p2.add(tf3);p2.add(l4);p2.add(tf4);p3.add(b);p3.add(l5);p3.

41、add(tf5);/使用这种布局添加方法可以使用Layout 默认布局进行布局f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.SOUTH);f.setSize(400, 150);f.setLocation(200, 200);f.setVisible(true);/ 以上备注同实验 1以下蓝色字体按照题 1 中的思路编程tf1.addKeyListener(new KeyListener()public void keyPressed(KeyEvent e)if(e.getKey

42、Code() = KeyEvent.VK_ENTER)tf3.setText(tf1.getText();public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) ); / 对文本框 1("1 号商品价格 " )添加键盘监控器,接收到回车符完成相应功能tf2.addKeyListener(new KeyListener()public void keyPressed(KeyEvent e)if(e.getKeyCode() = KeyEvent.VK_ENTER)tf4.setText(tf2.

43、getText();public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) ); / 对文本框 2(" 数量 ") 添加键盘监控器,接收到回车符完成相应功能f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););/ 窗体的关闭监控器b.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)int p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论