JAVA实验报告分析Word下载.docx
《JAVA实验报告分析Word下载.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告分析Word下载.docx(63页珍藏版)》请在冰豆网上搜索。
同组学生姓名:
————实验地点:
1318
实验日期:
2014.9.25实验成绩:
批改教师:
xxxxx批改时间:
一、实验目的和要求
(1)熟练掌握JDK1.6及MyEclipse8.5编写调试Java应用程序及Java小程序的方法;
(2)熟练掌握Java应用程序的结构;
(3)了解Java语言的特点,基本语句、运算符及表达式的使用方法;
(4)熟练掌握常见数据类型的使用;
(5)熟练掌握if-else、switch、while、do-while、for、continue、break、return语句的使用方法;
理解和掌握重载方法;
(6)熟练掌握数组和字符串的使用;
(7)调试程序要记录调试过程中出现的问题及解决办法;
(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;
(9)做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows操作系统,装有JDK1.6和MyEclipse8.5软件。
三、实验过程
(1)分别使用JDK命令行和MyEclipse编译运行Java应用程序;
适当添加注释信息,通过javadoc生成注释文档;
为主方法传递参数“Hello!
”字符串,并输出,记录操作过程。
publicclassHello
{
publicstaticvoidmain(Stringargs[])
{
System.out.println("
Hello!
"
);
}
}
(2)教材P11页程序调试,改写程序;
(3)编写一个重载方法的程序,调试通过。
要求:
(1)编译调试程序之前应配置好环境变量;
(2)要分别掌握用JDK命令行和MyEclipse集成开发环境调试Java程序;
(3)注意Java重载程序:
构造方法和成员方法的区别。
程序清单:
(建议程序中适当添加注释信息,增强可读性;
较长程序分栏书写,保证报告排版整洁美观。
)
(实验一程序清单续1)
packagepack;
importmypackage.Point;
publicclassLine{
publicstaticPointstart;
publicstaticPointend;
publicLine(Pointstart,Pointend){
this.start=start;
this.end=end;
publicStringtoString()
returnthis.getClass().getName()+"
("
+this.start.toString()+"
"
+this.end.toString()+"
)"
;
publicdoublelength()
inta=start.x-end.x,b=start.y-end.y;
returnMath.sqrt(a*a+b*b);
{Linel=newLine(start,end);
Pointstart=newPoint(100,100);
Pointend=newPoint(100,200);
System.out.println(newLine(start,end).toString());
System.out.println(l.length());
(实验一程序清单续2)
(3)编写一个重载方法的程序,调试通过。
publicclassdcc{
publicvoidder(){
System.out.println('
z'
publicintder(intc){
returnc;
publicStringder(inti,charc){
returnc+"
="
+i;
publicstaticvoidmain(String[]args){
dccy=newdcc();
y.der();
System.out.println(y.der(4,'
));
System.out.println(y.der(20));
}
四、实验结果与分析
运行结果:
Hello!
调试结果:
pack.Line(Point(100,100),Point(100,200))
程序改写后的调试结果:
100.0
z
z=4
20
面向对象编程实验学时:
8
2014-10-23实验成绩:
xxxx批改时间:
(1)熟练掌握Java语言类定义的基本语法;
(2)熟练掌握类成员的访问控制,对象建立的方法;
(3)熟练掌握类构造方法、成员方法的定义和重载;
(4)熟练掌握类继承、多态和抽象性;
(5)熟练掌握接口的定义和实现方法;
(6)掌握基本的异常处理方法;
(7)调试程序要记录调试过程中出现的问题及解决办法;
(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;
(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。
(2)设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积和体积。
(3)设计三角形类,继承图形抽象类,计算三角形面积和周长。
(4)包的建立与使用:
设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。
观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。
编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。
(5)试编码实现多态在工资系统中的应用:
给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。
Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。
该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。
在主测试类Test中测试各类雇员工资计算结果。
提示:
对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。
在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。
为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。
在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。
程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。
Employee类定义如下:
abstractclassEmployee
privateStringfirstName;
privateStringlastName;
publicEmployee(Stringfirst,Stringlast)
firstName=first;
lastName=last;
publicStringgetEmployeeName()
returnfirstName;
publicStringgetLastName()
returnlastName;
publicStringtoString()
returnfirstName+lastName;
publicabstractStringearnings();
(6)异常的捕获:
计算两数相除并输出结果。
使用三个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有关的异常(空白处补全捕获语句)
//捕获数值转化时的异常,如不能将字符转化成数值
//捕获除数为0的异常
编译并运行,当产生输入输出异常时显示异常信息;
当输入除数为0时,出现算术异常,提示除数为0,并要求重新输入;
当输入的不是整数时,如将30输成了3o,出现数值格式异常,提示输入整数。
(8)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。
(1)注意选用适当的类成员修饰符(private、protected、public等),比较它们的使用情况;
(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如two.num1表示实验二的第一题;
(3)学会使用MyEclipse的各种调试方法;
(4)学会查阅JavaAPI文档,如查找异常类的使用方法。
较长程序可分栏书写,保证报告排版整洁美观。
(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。
publicclassComplex{
privatedoublereal,imag;
publicComplex(doublereal,doubleimag){
this.real=real;
this.imag=imag;
}
publicComplex(){
this(0.0,0.0);
publicComplex(Complexc){
this.real=c.real;
this.imag=c.imag;
voidset(doubler,doublei){
real=r;
imag=i;
voidset(Complexd){
set(d.real,d.imag);
publicvoidadd(Complexc){
this.real+=c.real;
this.imag+=c.imag;
}
publicvoidminus(Complexc){
this.real-=c.real;
this.imag-=c.imag;
publicstaticComplexadd(Complexc1,Complexc2){
returnnewComplex(c1.real+c2.real,c1.imag+c2.imag);
publicstaticComplexminus(Complexc1,Complexc2){
returnnewComplex(c1.real-c2.real,c1.imag-c2.imag);
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(objinstanceofComplex){
Complexc=(Complex)obj;
returnthis.real==c.real&
&
this.imag==c.imag;
returnfalse;
publicStringtoString(){
return"
+this.real+"
+"
+this.imag+"
i)"
publicstaticvoidmain(Stringargs[]){
Complexa=newComplex(2.0,3.5);
Complexb=newComplex(9.0,1.7);
Complexc=b;
System.out.println(a+"
+b+"
+Complex.add(a,b));
-"
+Complex.minus(a,b));
b:
c:
+c+"
b==c?
+(b==c)+"
b.equals(c)?
+(b.equals
(c)));
c=newComplex();
c.set(b);
System.out.println("
(2)设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积和体积。
classCircle{
staticdoublePI=3.14159;
doubler;
publicCircle(doubler){this.r=r;
doublearea(){returnPI*r*r;
classSphereextendsCircle{
publicSphere(doubler){super(r);
publicdoublearea(){return4*PI*r*r;
publicdoublevolume(){return3*PI*Math.pow(r,3)/4;
classColumnextendsCircle{
privatedoubleh;
publicColumn(doubler,doubleh){
super(r);
this.h=h;
publicdoublearea(){return2*PI*r*h+2*PI*r*r;
publicdoublevolume(){returnPI*r*r*h;
classTaperextendsCircle{
publicTaper(doubler,doubleh){
publicdoublearea(){returnPI*r*Math.sqrt(h*h+r*r)+PI*r*r;
publicdoublevolume(){returnPI*r*r*h/3;
publicclasstest{
publicstaticvoidmain(Stringargs[]){
Circlecir=newCircle(3.0);
Areaofcircle="
+cir.area());
Spheresph=newSphere(6.0);
Areaofshere="
+sph.area()+"
\n"
volumeof
sphere="
+sph.volume());
Columncol=newColumn(3.0,5.0);
AreaofColumn="
+col.area()+"
column="
+col.volume());
Tapertap=newTaper(2.0,4.0);
Areaoftaper="
+tap.area()+"
volumnof
taper="
+tap.volume());
(3)设计三角形类,继承图形抽象类,计算三角形面积和周长。
publicabstractclassClosedFigure{
protectedStringshape;
protectedClosedFigure(Stringshape){
this.shape=shape;
protectedClosedFigure(){
this("
未知
publicabstractdoublearea();
publicabstractdoubleperimeter();
publicvoidprint(){
一个
+this.shape+"
,
+this.toString()
,周长为
+this.perimeter()+"
,面积为
+this.area());
publicclassTriangleextendsClosedFigure{
protecteddoublea,b,c;
publicTriangle(doublea,doubleb,doublec){
super("
三角形
this.a=a;
this.b=b;
this.c=c;
publicTriangle(){
this(0,0,0);
publicStringtoString(){
return"
a
边长度"
+this.a+"
b
+this.b+"
c
+this.c;
publicdoublearea(){
doubled=(a+b+c)/2.0;
returnMath.sqrt(d*(d-a)*(d-b)*(d-c));
publicdoubleperimeter(){
returna+b+c;
Triangletri=newTriangle(5,9,11);
tri.print();
(4)包的建立与使用
importjava.util.Scanner
publicclassCalculator
{publicstaticvoidmain(String[]args)
{System.out.println("
根据提示输入指令!
while(true){
是否继续Y/N?
Scannersc=newScanner(System.in);
StringisC=sc.nextLine().trim();
if("
y"
.equals(isC)||"
Y"
.equals(isC)){
System.out.println("
输入第一个数:
inta=sc.nextInt();
输入计算符号:
+-*/"
Stringvar=sc.next().trim();
输入第二个数:
intb=sc.nextInt();
if("
.equals(var)){
System.out.println(a+"
+(a+b));
}elseif("
System.out.println(a+"
+(a-b));