java实验报告.docx
《java实验报告.docx》由会员分享,可在线阅读,更多相关《java实验报告.docx(71页珍藏版)》请在冰豆网上搜索。
java实验报告
金陂科扶^肉
生实验报
(理工类)
:
课程名称:
JAVA程序设计
专业班级:
12软件工程(服务外包)1
1
1
1
1
1
:
学生学号:
1205106077
学生姓名:
丁
超
1
1
1
1
1
:
所属院部:
软件工程学院
指导教师:
金
英
1
1
1
1
2014——2015学年
第1
学期
金陵科技学院教务处制
告书写要求
实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。
纸张一律采用A4的纸张。
写说明
实验报告
实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。
各院部可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)
(2)
(3)
(4)
(5)以零分论处。
实验报告批改说明
细致观察,及时、准确、如实记录。
准确说明,层次清晰。
尽量采用专用术语来说明事物。
外文、符号、公式要准确,应使用统一规定的名词和符号。
应独立完成实验报告的书写,严禁抄袭、复印,一经发现,
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验
报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:
JAVA编程基础实验学时:
4
、实验目的和要求
了解Java语言的特点,基本语句、运算符及表达式的使用方法;熟练掌握常见数据类型的使用;熟练掌握if-else、switch、while、do-while、for、continue、break、return
语句的使用方法;理解和掌握重载方法;
6)
熟练掌握数组和字符串的使用;
7)
调试程序要记录调试过程中出现的问题及解决办法;
8)
编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试
经验;
9)做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows操作系统,装有JDK1.6和MyEclipse8.5软件。
三、实验过程
(1)分别使用JDK命令行和MyEcIipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Hello!
”作过程。
pubIiccIassHeIIo
{
pubIicstaticvoidmain(Stringargs[])
{System.out.printIn("HeIIo!
");
}}
(2)教材P11页程序调试,改写程序;编写一个重载方法的程序,调试通过。
字符串,并输出,记录操
(3)
要求:
编译调试程序之前应配置好环境变量;
要分别掌握用JDK命令行和MyEclipse集成开发环境调试
Java程序;
注意Java重载程序:
构造方法和成员方法的区别。
程序清单:
建议程序中适当添加注释信息,增强可读性;较长程序分栏书写,
保证报告排版整洁美观。
)
(实验一程序清单续1)
⑵教材
P11页程序调试,
改写程序;
package
import
pack;
mypackage.Point;
publicpublic
publicpublic
classLine{
staticPoint
start
end;
Line(Pointstart,Pointend){this.start=start;
staticPoint
this.end=end;
}
publicStringtoString()
{
return
this.getClass().getName()+ring()+")";
}
publicdoublelength()
"("+this.start.toString()+
","+this.end.toSt
inta=start.x-end.x,b=start.y-end.y;returnMath.sqrt(a*a+b*b);
publicstatic
Linel=
Pointstart=
Pointend=
System.
System.
voidmain(Stringargs[])
newLine(start,end);
newPoint(1OO,1OO);
newPoint(100,200);
.println(newLine(start,end).toString());
.println(l.length());
out
out
(实验一程序清单续2)
(3)编写一个重载方法的程序,调试通过。
Publicclassdcc{
publicvoidzy(){
System.out
publicintzy(
returnc;}
publicStringzy(
.println(intc){
'z');}
returnc+
publicstatic
inti,charc){
"="+i;}
voidmain(String[]args){
out.println(y.zy(4,out.println(y.zy(20));
四、实验结果与分析
(1)分别使用JDK命令行和MyEclipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Hello!
”字符串,并输出,记录操作过程。
运行结果:
Hello!
(2)教材P11页程序调试,改写程序;调试结果:
pack.Line(Point(100,100),Point(100,200))程序改写后的调试结果:
pack.Line(Point(100,100),Point(100,200))100.0
(3)编写一个重载方法的程序,调试通过。
运行结果:
z
z=4
20
实验项目名称:
面向对象编程实验学时:
同组学生姓名:
实验地点:
1318
实验日期:
2014.10.23
实验成绩:
批改教师:
金英
批改时间:
、实验目的和要求
熟练掌握Java语言类定义的基本语法;熟练掌握类成员的访问控制,对象建立的方法;熟练掌握类构造方法、成员方法的定义和重载;熟练掌握类继承、多态和抽象性;
熟练掌握接口的定义和实现方法;
调试程序要记录调试过程中出现的问题及解决办法;编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经
验;
做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows操作系统,装有JDK1.6和MyEclipse8.5软件。
三、实验过程
1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、
比较、字符串描述、比较是否相等等操作。
设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积
和体积。
设计三角形类,继承图形抽象类,计算三角形面积和周长。
包的建立与使用:
设计计算器类Calculator,计算加、减、乘、除和立方体
体积,并且打包为mypackage。
观察源文件目录下是否生成了mypackage文件夹,在该
文件夹中是否有Calculate.class文件。
编辑PackageDemo.java,保存在
Calculator.java同一目录下,引用计算器类的各方法显示计算结果。
(5)试编码实现多态在工资系统中的应用:
给出一个根据雇员类型利用abstract方法
和多态性完成工资单计算的程序。
Employee是抽象类,Employee的子类有Boss(每星
期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售
额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据
工作时间长短发放工资)。
该例的Employee的每个子类都声明为final,因为不需要再
Employee派出生的。
在超类中声明earnings()为抽象
方法,并且对于每个子类都提供恰当的earnings()的实现方法。
为了计算雇员的工资,
程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。
在一个实际的工资系
用数组的每个元素(Employee引用)调用每个对象的earnings()方法。
Employee类定义如下:
abstractclassEmployee{privateStringfirstName;privateStringlastName;publicEmployee(Stringfirst,Stringlast){firstName=first;lastName=last;
}publicStringgetEmployeeName(){
returnfirstName;
}publicStringgetLastName(){returnlastName;
}publicStringtoString(){
returnfirstName+lastName;
catch子句,分别捕捉输入输出异
}publicabstractStringearnings();}(6)异常的捕获:
计算两数相除并输出结果。
使用三个常、除数为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;
}//
捕获与I/O有关的异常(空白处补全捕获语句)
//
捕获数值转化时的异常,如不能将字符转化成数值
//
捕获除数为0的异常
}
编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提
示除数为0,并要求重新输入;当输入的不是整数时,如将30输成了3o,出现数值格式异
常,提示输入整数。
(8)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。
要求:
注意选用适当的类成员修饰符(private、protected、public等),比较它们的使用情况;养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如two.num1表示实验二的第一题;学会使用MyEclipse的各种调试方法;学会查阅JavaAPI文档,如查找异常类的使用方法。
程序清单:
实验二程序清单续1)
(1)设计复数类,成员变量包括实部和虚部,字符串描述、比较是否相等等操作。
publicclassComplex{privatepublicthisthis}publicthis
成员方法包括实现复数加法、减法、比较、
}public
doublereal,imag;
Complex(doublereal,double.real=real;
.imag=imag;
Complex(){(0.0,0.0);
Complex(Complexc){
imag){
this
real=c.
real
this
imag=c.
imag;
}
voidset(real=r;
double
r,doublei){
imag=i;
}
voidset(Complexd){set(d.
}
public
real,d.imag);
this.
real+=c.
real;
this.
imag+=c.
imag;
void
minus(Complexc){
this
.real-=c.
real
this
.imag-=c.
imag
voidadd(Complexc){
}public
public
return
static
Complexadd(Complexc1,Complexc2){
newComplex(c1.real+c2.real,c1.imag+c2.imag
);
publicstaticComplexminus(Complexc1,Complexc2){
returnnewComplex(c1.real-c2.real,c1.imag-c2.imag
);
public
if
booleanequals(Objectobj){(this==obj)
returntrue;
(objinstanceofComplex){Complexc=(Complex)obj;
returnthis.real==c.real&&this.imag==c.imag;
if
}
returnfalse
publicStringtoString(){
return
"("+this.real+"+"+this.imag+"i)"
}
publicstatic
Complexa=
Complexb=
Complexc=b;
System.out
System.out
voidmain(Stringargs[]){newComplex(2.0,3.5);newComplex(9.0,1.7);
.println(a+
.println(a+
"+"+b+"="+Complex.add(a,b));"-"+b+"="+Complex.minus(a,b));
System.out.println(
"b:
"+b+",c:
"
+c+",b==c?
"+(b==c)+",b.equals(c)?
"
+(b.
equals
(c)));
c=newComplex();
c.set(b);
System.out.println(equals
(c)));
}
}
实验二程序清单续2)
(2)设计圆柱体类和圆椎体类,积。
继承圆类Circle并实现Volume接口,计算表面积和体
publicinterfaceVolume{//
publicabstractdoublegetVolume();}
定义接口
publicclassCircle{//doubler;
定义圆形类
publicCircle(doubler){this.r=r;
}
publicdoublegetS(){//returnMath.PI*r*r;
面积
publicdoublegetL(){//return2*Math.PI*r;
}
}
周长
publicclassCylinderextendsCircleimplementsVolume{//doubleh;
publicCylinder(doubler,doubleh){
super(r);
this.h=h;
}
定义圆柱体
publicdoublegetArea(){//returnh*getL()+2*getS();
}
表面积
publicdoublegetVolume(){//returnh*getS();
}
体积
publicstaticvoidmain(String[]args){Cylinderc1=newCylinder(5,10);
表面积:
"+c1.getArea());体积:
"+c1.getVolume());
System.out.println("
System.out.println("}
}
实验二程序清单
3)
(3)设计三角形类,继承图形抽象类,计算三角形面积和周长。
publicabstractclassClosedFigure
{protectedStringshape;protectedClosedFigure(Stringshape)
{this.shape=shape;}
protectedClosedFigure()
("未知");}
abstractdouble
{thispublicpublicpublic
{System.
abstractdouble
area();perimeter();
voidprint()out.println(
"+this.perimeter()+public
{protectedprotectedprotectedpublic
{thisthis.
classEllipsedouble
this
public
"一个"+this.shape+","+this.toString()+",面积为"+this.area());}}
height;
doubleunder;
doublelength;
Ellipse(doubleheight,
.height=height;
under=under;
{returnpublic
{returnpublic
{returnpublic
length=length;}
StringtoString()"高"+height+""
doublearea()
doubleunder,doublelength)
+"底"+under;}
height*under*1/2;}double
(thisstatic
{Ellipsee1=
perimeter()
.under+this.length*2);}voidmain(Stringargs[])newEllipse(10.0,20.0,14.0);
System.out.print("面积是"+e1.area()+"\n"
"+e1.perimeter()+"\n");
System.out.println(e1.toString());}}
+"周长是
",周长为
实验二程序清单4)
,计算加、减、乘、除和立方体体积,
mypackage文件夹,在该文件夹中是同一目录
(4)包的建立与使用:
设计计算器类Calculator
并且打包为mypackage。
观察源文件目录下是否生成了否有Calculate.class文件。
编辑PackageDemo.java,保存在Calculator.java
下,引用计算器类的各方法显示计算结果。
importjava.util.Scanner;
publicclassCalculator
{publicstaticvoidmain(String[]args)
"根据提示输入指令!
");
{System.out.println(
while(true){
System.out.println(“是否继续Y/N?
");Scannersc=newScanner(System.in);
StringisC=sc.nextLine().trim();
if("y".equals(isC)||
System.out.println(
inta=sc.nextInt();
System.out.println(
Stringvar=sc.next().trim();
"Y".equals(isC)){
"输入第一个数:
");
"输入计算符号:
+-*/"
);
System.out.println(
intb=sc.nextInt();
if("+".equals(var)){
System.out.println(a+
}elseif("-".equals(var)){
System.out.println(a+
}elseif("*".equals(var)){
System.out.println(a+
}elseif("/".equals(var)){
System.out.println(a+
"输入第二个数:
“);
"+"+b+"="+(a+b));
11
11
+b+"="+(a-b));
11*11
+b+"="+(a*b));
7"+b+"="+(a/(double)b));
ll/ll
else{
System.break;
}else{
System.out.println(
"计算符号有误,程序退岀“);
break;
out.pnntln(
}
"程序退岀");
}}}
(实验二程序清单5)
(5)Boss类
packagess1;
//每星期发给他固定工资,而不计工作时间
finalclassBossextendsEmployee{
privatedoubleweeklySalary
doubles)
publicBoss(Stringfirst,Stringlast,{
super(first,last);
setWeeklySalary(s);