java实验报告.docx
- 文档编号:8964545
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:41
- 大小:335.77KB
java实验报告.docx
《java实验报告.docx》由会员分享,可在线阅读,更多相关《java实验报告.docx(41页珍藏版)》请在冰豆网上搜索。
java实验报告
实验三、面向对象编程实验
一、实验目的
⒈掌握接口的编写及使用
⒉理解继承、多态
⒊掌握包的编写以及如何使用包中的类
二、预习内容
java的基本语法知识
三、实验设备与环境
装有JAVA语言工具软件(JCreator)的微机若干
四、实验内容
⒈接口的编写
编辑Interfaceclass.java
packagezhaoyuan;
publicinterfaceInterfaceclass{
inti=4;
intk=5;
voidfunc1();
intfunc2(intx);
}
(2)编辑UseInterface.java
packagezhaoyuan;
publicclassUseInterfaceimplementsInterfaceclass{
intj;
publicvoidfunc1()
{
System.out.println("func1="+1);
}
publicintfunc2(inti)
{
System.out.println("func2="+1);
return(i);
}
publicstaticvoidmain(Stringsrgs[])
{
UseInterfacex=newUseInterface();
x.func1();
x.func2(k);
}
}
结果:
⒉多态在工资系统中的应用
设计一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。
Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。
该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。
对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Earnings()派出生的。
所有在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。
为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引导并调用earnings()方法。
在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。
程序依次使用数组的每个元素(Employee引用)调用每个对象的employee()方法。
packagezhaoyuan;
abstractclassEmployee
{
privateStringname1;
privateStringname2;
publicEmployee(Strings1,Strings2)
{
name1=s1;
name2=s2;
}
publicStringgetname1()
{
returnname1;
}
publicStringgetname2()
{
returnname2;
}
publicStringtostring()
{
returnname1+name2;
}
publicabstractdoubleearning();
}
finalclassBossextendsEmployee
{
privatedoubleweeklysalary;
publicBoss(Strings1,Strings2,doubles)
{
super(s1,s2);
weeklysalary=s;
}
publicvoidsetweeklysalary(doubles)
{if(s>0)
weeklysalary=s;
elseweeklysalary=0;
}
publicdoubleearning()
{
returnweeklysalary;
}
publicStringtostring()
{
return"Boss"+super.tostring();
}
}
finalclassCommissionWorkerextendsEmployee
{
privatedoublesalary;
privatedoublecommission;
privateintquantity;
publicCommissionWorker(Strings1,Strings2,doubles,doublec,intq)
{
super(s1,s2);
salary=s;
commission=c;
quantity=q;
}
publicvoidsetsalary(doubles)
{if(s>0)
salary=s;
elsesalary=0;
}
publicvoidsetcommission(doublec)
{if(c>0)
commission=c;
elsecommission=0;
}
publicvoidsetquantity(intq)
{if(q>0)
quantity=q;
elsequantity=0;
}
publicdoubleearning()
{
returnsalary+commission+quantity;
}
publicStringtostring()
{
return"commissionworker"+super.tostring();
}
}
finalclassPieceworkerextendsEmployee
{
privatedoublewagepiece;
privateintquantity;
publicPieceworker(Strings1,Strings2,doublew,intq)
{
super(s1,s2);
wagepiece=w;
quantity=q;
}
publicvoidsetwagepiece(doublew)
{if(w>0)
wagepiece=w;
elsewagepiece=0;
}
publicvoidsetquantity(intq)
{
quantity=q;
}
publicdoubleearning()
{
returnwagepiece+quantity;
}
publicStringtostring()
{
return"pieceworker"+super.tostring();
}
}
finalclassHourlyworkerextendsEmployee
{
privatedoublewage;
privateinthour;
publicHourlyworker(Strings1,Strings2,doublew,inth)
{
super(s1,s2);
wage=w;
hour=h;
}
publicvoidsetwagepiece(doublew)
{if(w>0)
wage=w;
elsewage=0;
}
publicvoidsethour(inth)
{if(h>=0&&h<168)
hour=h;
elsehour=0;
}
publicdoubleearning()
{
returnwage+hour;
}
publicStringtostring()
{
return"Hourlyworker"+super.tostring();
}
}
publicclassshiyan3_2{
publicstaticvoidmain(String[]args){
Employeeemp;
Stringoutput="";
Bossboss=newBoss("Jim","Smith",900.00);
CommissionWorkercom=newCommissionWorker("Kate","Green",400.0,3.0,150);
Pieceworkerpie=newPieceworker("Lily","King",2.5,200);
Hourlyworkerhou=newHourlyworker("Lucy","Jones",13.75,200);
emp=boss;
output+=emp.tostring()+"earned$"+emp.earning()+"\n"+boss.tostring()+"earned$"+boss.earning()+"\n";
System.out.print(output);
emp=com;
output+=emp.tostring()+"earned$"+emp.earning()+"\n"+com.tostring()+"earned$"+com.earning()+"\n";
System.out.print(output);
emp=pie;
output+=emp.tostring()+"earned$"+emp.earning()+"\n"+pie.tostring()+"earned$"+pie.earning()+"\n";
System.out.print(output);
emp=hou;
output+=emp.tostring()+"earned$"+emp.earning()+"\n"+hou.tostring()+"earned$"+hou.earning()+"\n";
System.out.print(output);
}
}
结果:
⒊包的建立与使用
编辑Calculate.java
packagezhaoyuan;
publicclassCalculate{
privateinta;
publicCalculate(inta)
{
this.a=a;
System.out.println("fromconstrartion"+this.a);
}
publicdoublevolume(doubleheight,doublewidth,doubledepth)
{
returnheight*width*depth;
}
intadd(intx,inty)
{
returnx+y;
}
protectedvoida()
{
System.out.println("fromconstration"+a);
}
}
编译,查看D:
\myjava目录下是否生成了myoackage文件夹,在该文件夹中是否有Calculate.class文件。
编辑PackageDemo.java
packagezhaoyuan;
importzhaoyuan.Calculate;
publicclassPackageDemo{
publicstaticvoidmain(String[]args){
Calculatec=newCalculate(10);
doubles=c.volume(5,6,7);
System.out.println(s);
//intb=c.add(5,6);
//c.a();
}
}
结果:
实验四、异常处理实验
一、实验目的
⒈异常的生产及捕获
⒉自定义异常及其使用
二、预习内容
面向对象的基本知识
三、实验设备与环境
装有JAVA语言工具软件(JCreator)的微机若干
四、实验内容
⒈异常的捕获
计算两数相除并输出结果。
使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。
编译并运行,当输入除数为0时,将有异常出现,当输入的不是整数时,如将30输成了3o,出现的是另一种异常。
packagezhaoyuan;
importjava.io.*;
publicclassshiyan4_1{
publicstaticvoidmain(String[]args){
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
System.out.println("请输入被除数:
");
Strings=br.readLine();
inta=Integer.parseInt(s);
System.out.println("请输入除除数:
");
s=br.readLine();
intb=Integer.parseInt(s);
intc=a/b;
System.out.println("商为:
"+c);
}
catch(IOExceptione)
{
e.printStackTrace();
}
catch(NumberFormatExceptione)
{
System.out.println("请输入整数!
");
e.printStackTrace();
}
catch(ArithmeticExceptione){
System.out.println("除数不可以为0!
");
e.printStackTrace();
}
}
}
结果:
⒉定义异常
编写程序包含自定义异常,当输入数值为13和4时抛出该异常。
编辑Ex2.java
packagezhaoyuan;
classEx2extendsException{
Ex2(Stringmsg)
{
super(msg);
}
}
publicclassMyEx{
privateintx;
voidsetX(intx)
{
this.x=x;
}
voidf1()throwsEx2
{
if(x==13)
thrownewEx2("Idon'tlike13!
");
elseif(x==4)
thrownewEx2("Idon'tlike4!
");
else
System.out.println(100/x);
}
publicstaticvoidmain(String[]args){
MyExa=newMyEx();
try
{
a.setX(5);
//a.setX(4);
//a.setX(13);
//a.setX(0);
a.f1();
}
catch(Ex2e)
{
System.out.println("getmessage:
"+e.getMessage());
}
}
}
结果:
释放a.setX(13)语句
释放a.setX(4)语句
编译并运行,分别取消注释上面程序中被注释的语句。
当释放a.setX(13)语句后,查看运行结果,当释放a.setX(4)语句后,查看运行结果。
实验八、多线程实验
一、实验目的
⒈掌握多线程的实现方法
⒉学会利用多线程来显示动画
二、预习内容
线程与进程的基础知识
三、实验设备与环境
装有JAVA语言工具软件(JCreator)的微机若干
四、实验内容
⒈使用Runnable接口的方法实现多线程
编辑TestRunnable.java
packagezhaoyuan;
importjava.applet.*;
importjava.awt.*;
publicclassTestRunnableextendsAppletimplementsRunnable{
Labelprompt1=newLabel("thefirstthread");
Labelprompt2=newLabel("thesecondthread");
TextFieldthreadFirst=newTextField(14);
TextFieldthreadSecond=newTextField(14);
ThreadThread1,Thread2;
intcount1=0,count2=0;
publicvoidinit(){
add(prompt1);
add(threadFirst);
add(prompt2);
add(threadSecond);
}
publicvoidstart(){
Thread1=newThread(this,"FirstThread");
Thread2=newThread(this,"SecondThread");
Thread1.start();
Thread2.start();
}
publicvoidrun(){
StringcurrentRunning;
While(true);
{
try{
Thread.sleep((int)(Math.random()*10000));
}
catch(Exceptione){
}
currentRunning=Thread.currentThread().getName();
if(currentRunning.equals("FirstTheard")){
count1++;
threadFirst.setText("thefirstthread"+count1+"use");
}elseif(currentRunning.equals("SecondThread")){
count2++;
threadSecond.setText("thesecondthread"+count2+"use");
}
}
}
privatevoidWhile(booleanb){
}
}
结果:
(1)编译TestRunnable.java。
(2)编辑TestRunnable.htm,要求与TestRunnable.class在同一目录下。
(3)运行TestRunnable.htm。
⒉实现简单动画
实现一个简单动画,效果为一个球由小到大,从屏幕左侧滚动到右侧。
packagezhaoyuan;
importjava.applet.*;
importjava.awt.*;
publicclassshiyan8_2extendsApplet{
intx1=50,x2=5,y1=25,y2=5;
publicvoidpaint(Graphicsg){
intw=this.getWidth();
inth=this.getHeight();
if(x1>=w){
x1=50;
}
if(x2>h){
x2=5;
}
g.setColor(Color.cyan);
g.fillOval(x1,y1,x2,x2);
g.drawOval(x1,y1,x2,x2);
x1+=50;
x2+=50;
try{
Thread.sleep(500);
}catch(Exceptione){
}
repaint();
}
}
结果:
实验九、输入输出流实验
一、实验目的
⒈了解文件的概念和文件对象的创建方法
⒉了解FileInputStream和FileOutoutStream的基本概念
⒊学会创建文件输入输出流
⒋掌握使用文件输入输出流读写文件的方法
二、预习内容
输入输出类的使用方法
三、实验设备与环境
装有JAVA语言工具软件(JCreator)的微机若干
四、实验内容
⒈编写程序读取文本文件内容
packagezhaoyuan;
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.imageio.IIOException;
publicclassshiyan9_1{
publicstaticvoidmain(String[]args){
newFileFrame();
}
}
classFileFrameextendsFrameimplementsActionListener
{
TextAreata;
Buttonopen,quit;
FileDialogfd;
FileFrame()
{
super("获取显示文本文件");
ta=newTextArea(10,45);
open=newButton("打开");
quit=newButton("关闭");
open.addActionListener(this);
quit.addActionListener(this);
setLayout(newFlowLayout());
add(ta);
add(open);
add(quit);
show();
}
public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 报告