Java程序设计实验1.docx
- 文档编号:9779452
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:16
- 大小:49.81KB
Java程序设计实验1.docx
《Java程序设计实验1.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验1.docx(16页珍藏版)》请在冰点文库上搜索。
Java程序设计实验1
学生实验报告册
(理工类)
课程名称:
Java程序设计专业班级:
学生学号:
学生姓名:
所属院部:
指导教师:
20——20学年第学期
金陵科技学院教务处制
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。
纸张一律采用A4的纸张。
实验报告书写说明
实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。
教师可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:
面向对象编程实验实验学时:
6
同组学生姓名:
实验地点:
实验日期:
实验成绩:
批改教师:
批改时间:
实验1面向对象编程实验
一、实验目的和要求
(1)熟悉Java几种IDE(集成开发环境);重点是Eclipse
(2)掌握接口的编写及使用
(3)理解继承、多态
(4)掌握包的编写以及如何使用包中的类
二、实验仪器和设备
奔腾以上个人计算机,装有JAVA语言工具软件(Eclipse),windows操作系统。
三、实验内容与过程
⒈类的封装
(1)声明复数类,成员变量包括实部和虚部,成员方法包括实现复数的加法、减法
classComplexNumbers{
intreal;//实部
intimag;//虚部
voidplus(…){…}//实数加
voidsubs(…){…}//实数减
}
(2)声明银行类,成员变量包括账号、储户姓名、开户时间、身份证号码、存款余额,成员方法包括开户、存款、取款、查询、销户。
classBankCount{
longBCNo;//账号
StringName;//储户姓名
StringInitTime;//开户时间
longID;//身份证号码
doublebalance;//存款余额
BankCount(…){…}//开户
voidSaving(…){…}//存款
voidWithdraw(…){…}//取款
voidInquire(…){…}//查询
voidDeBankCount(…){…}//销户
}
2.类的继承与多态
多态在工资系统中的应用
下面给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。
Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。
该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。
对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Earnings()派出生的。
所有在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。
为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引导并调用earnings()方法。
在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。
程序依次使用数组的每个元素(Employee引用)调用每个对象的employee()方法。
(1)编辑Test.java,设保存在D:
\myjava目录下。
abstractclassEmployee
{
privateStringfirstName;
privateStringlastName;
publicEmployee(Stringfirst,Stringlast)
{
firstName=first;
lastName=last;
}
publicStringgetEmployeeName()
{
returnfirstName;
}
publicStringgetLastName()
{
returnlastName;
}
publicStringtoString()
{
returnfirstName+lastName;
}
publicabstractStringearnings();
}
//定义Boss类,为Employee的子类
finalclassBossextendsEmployee
{
privatedoubleweeklySalary;
publicBoss(Stringfrist,Stringlast,doubles)
{
super(frist,last);
setWeeklySalary(s);
}
publicvoidsetWeeklySalary(doubles)
{
weeklySalary=(s>0?
s:
0);
}
publicStringearnings()
{
return"Boss"+super.toString();
}
}
//定义CommissiomWorker类,为Employee的子类
finalclassCommissionWorkerextendsEmployee
{
privatedoublesalary;
privatedoublecommission;
privateintquantity;
publicCommissionWorker(Stringfirst,Stringlast,doubles,doublec,intq)
{
super(first,last);
setSalary(s);
setCommission(c);
setQusntily(q);
}
/*publicStringearnings()
{
}*/
publicvoidsetQusntily(doubles)
{
salary=(s>0?
s:
0);
}
publicdoublesetCommission(doublec)
{
returncommission=(c>0?
c:
0);
}
publicStringearnings()
{
doublei=salary+commission+quantity;
returnDouble.valueOf(i).toString();
}
publicStringtoString()
{
return"CommissionWorker"+super.toString();
}
publicvoidsetSalary(doubles)
{
salary=s;
}
}
//定义PieceWorker类,为Employee的子类
finalclassPieceWorkerextendsEmployee
{
privatedoublewagePiece;
privateintquantity;
publicPieceWorker(Stringfirst,Stringlast,doublew,intq)
{
super(first,last);
setWage(w);
setQuantity(q);
}
publicvoidsetWage(doublew)
{
wagePiece=(w>0?
w:
0);
}
publicdoublesetQuantity(intq)
{
returnq+wagePiece;
}
publicStringtoString()
{
return"PieceWoeker"+super.toString();
}
publicStringearnings()
{
returnDouble.valueOf(wagePiece+quantity).toString();
}
}
//定义HourlyWorker类,为Employee的子类
classHourlyWorkerextendsEmployee
{
privatedoublewage;
privatedoublehours;
publicHourlyWorker(Stringfirst,Stringlast,doublew,doubleh)
{
super(first,last);
setWage(w);
setHours(h);
}
publicvoidsetWage(doublew)
{
wage=(w>0?
w:
0);
}
publicvoidsetHours(doubleh)
{
hours=(h>=0&&h<168?
h:
0);
}
publicStringearnings()
{
return"HourlyWorker"+super.toString();
}
}
classText
{
publicstaticvoidmain(Stringargs[])
{
//使用超类声明ref
Employeeref;
Stringout="";
//分别定义各子类
Bossb=newBoss("Hohn","Smith",800.00);
CommissionWorkerc=newCommissionWorker("Sue","Hones",400.00,3.0,150);
PieceWorkerp=newPieceWorker("Bob","Lewis",2.5,200);
HourlyWorkerh=newHourlyWorker("Karen","price",13.75,40);
//使用子类分别实例化
ref=b;
out+=ref.toString()+"earned$"+ref.earnings()+"\n"+b.toString()+"earned$"+b.earnings()+"\n";
System.out.print(out);
ref=c;
out+=ref.toString()+"earned$"+ref.earnings()+"\n"+c.toString()+"earned$"+c.earnings()+"\n";
System.out.print(out);
ref=p;
out+=ref.toString()+"earned$"+ref.earnings()+"\n"+p.toString()+"earned$"+p.earnings()+"\n";
System.out.print(out);
ref=h;
out+=ref.toString()+"earned$"+ref.earnings()+"\n"+h.toString()+"earned$"+h.earnings()+"\n";
System.out.print(out);
}
}
3.接口的编写
(1)编辑Interfaceclass.java。
interfaceInterfaceclass
{
inti=4;
intk=5;
voidfunc1();
intfunc2(intx);
}
(2)编辑UseInterface.java。
classUseInterfaceimplementsInterfaceclass
{
intj;
publicvoidfunc1()//在使用接口的类中一定要实现接口中的所有抽象方法
{
System.out.println("func1="+1);
}
publicintfunc2(inti)
{
System.out.println("func2="+1);
returni;
}
publicstaticvoidmain(Stringsrgs[])
{
//Interfaceclass.classx=newInterfaceclass.class();不能对接口进行实例化
UseInterfacex=newUseInterface();
x.func1();
x.func2(k);
}
}
四、实验结果与分析(程序运行结果及其分析)
五、实验体会(遇到问题及解决办法,编程后的心得体会)
实验项目名称:
异常处理实验学时:
4
同组学生姓名:
实验地点:
实验日期:
实验成绩:
批改教师:
批改时间:
实验2异常处理
一、实验目的和要求
⒈异常的生产及捕获
⒉自定义异常及其使用
二、实验仪器和设备
奔腾以上个人计算机,装有JAVA语言工具软件(Eclipse),windows操作系统。
三、实验内容与过程
⒈异常的捕获
计算两数相除并输出结果。
使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。
importjava.io.*;
classEx1
{
publicstaticvoidmain(Stringargs[])
{
try{
BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));
System.out.print("请输入除数:
");
Stringcl=strin.readLine();
inta=Integer.parseInt(cl);
System.out.print("请输入被除数:
");
cl=strin.readLine();
intb=Integer.parseInt(cl);
intc=b/a;
System.out.println("商为:
"+c);
}
//捕获与I/O有关的异常
catch(IOExceptione){e.printStackTrace();}
//捕获数值转化时的异常,如不能将字符转化成数值
catch(NumberFormatExceptione){
System.out.println("请输入整数!
");
//e.printStackTrace();
}
//捕获除数为0的异常
catch(ArithmeticExceptione){
System.out.println("除数不可以0!
");
//e.printstackTrace();
}
}
}
编译并运行,当输入除数为0时,将有异常出现,当输入的不是整数时,如将30输成了3o,出现的是另一种异常。
⒉定义异常
编写程序包含自定义异常,当输入数值为13和4时抛出该异常。
编辑Ex2.java,设保存在D:
\myjava目录下。
classEx2extendsException
{
Ex2(Stringmsg)
{
super(msg);
}
}
classMyEx
{
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(Stringargs[])
{
MyExa=newMyEx();
try
{
a.setX(5);
//a.setX(13);
//a.setX(4);
//a.setX(0);
a.f1();
}
catch(Exceptione)
{
System.out.println("getmessage:
"+e.getMessage());
}}
}
编译并运行,分别取消注释上面程序中被注释的语句。
当释放a.setX(13)语句后,查看运行结果,当释放a.setX(4)语句后,查看运行结果。
四、实验结果与分析(程序运行结果及其分析)
五、实验体会(遇到问题及解决办法,编程后的心得体会)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 实验