Java程序设计实验指导书new.docx
《Java程序设计实验指导书new.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验指导书new.docx(39页珍藏版)》请在冰点文库上搜索。
Java程序设计实验指导书new
面向对象程序设计实验指导书
2010年9月
信息工程学院计算机系侯向华
目录
实验一熟悉java程序的编辑、编译和运行过程3
实验二Java语言程序设计基础训练5
实验三类的封装性和继承性设计7
实验四设计实现接口的类10
实验五异常处理12
实验六图形用户界面设计14
实验七Applet应用程序设计15
实验八输入/输出流和文件操作17
附录:
20
JavaLearningPath
(一)、工具篇20
JavaLearningPath
(二)、书籍篇22
JavaLearningPath(三)过程篇23
JavaLearningPath(四)方法篇25
JavaLearningPath(五)资源篇26
实验安排:
实验一熟悉java的编程环境2
实验二java语言基础2
实验三类的设计与使用4
实验四设计实现接口的类2
实验五异常处理2
实验六图形用户界面设计4
实验七Applet应用程序设计2
实验一熟悉java的编程环境
一、实验目的
1.了解和使用J2sdk1.5.0(JDK)集成环境。
2.了解和掌握JCREATOR集成环境的安装,简单应用。
3.了解JavaApplication和Applet程序的基本结构。
4.了解Java程序文件名和类名的说明方法。
二、实验内容与要求
1、输入一个Application源程序,学习编辑、编译、运行程序的方法。
//例1-1文件HelloWorldApp.java如下:
//HelloWorldApp.java
publicclassHelloWorldApp{
publicstaticvoidmain(Stringargs[]){
System.out.println(″HelloWorld!
″);
}
}
本程序的作用是输出下面一行信息:
HelloWorld!
请在jcreator中运行该程序。
2、输入一个applet源程序,学习编辑、编译、运行程序的方法。
简单的Applet小程序
例1-2//HelloWorldApplet.java
importjava.awt.*;
importjava.applet.*;
publicclassHelloWorldAppletextendsApplet{//anapplet
publicvoidpaint(Graphicsg){
g.drawString(″HelloWorldinApplet!
″,20,20);
}
}
这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。
为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后在jcreator中对它进行编译:
得到字节码文件HelloWorldApplet.class。
由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。
它的文件如下:
AnApplet
其中用
3、安装JCREATOR软件,并配置JCREATOR,在JCREATOR中用建立工程的方式重新运行上面的两个例题。
JCREATOR软件安装完成后,请打开配置->选项,如下,检查JDK配置文件是否安装好,如果没有点击新建完成配置。
三、思考题
1.什么是Java虚拟机?
它的作用是什么?
2.JavaApplication程序与JavaApplet程序的不同之处有那些?
请各位同学收集错误代码与提示信息,以及产生错误的原因。
3.上网搜索目前有哪些Java开发平台,分析他们的优缺点或特点。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验二Java语言基础
一、实验目的
1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。
2.掌握Java语言中具各种运算符表达式的基本知识。
3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。
4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。
5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。
熟练掌握特殊流程控制语句如break,continue,标号语句。
6.熟练掌握一维数组和二维数组的使用
7.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题
二、实验内容与要求
1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh21
{
publicstaticvoidmain(Stringargs[])
{
charx,y,z;
x='K';
y='\\';
z='\117';
System.out.print(x);
System.out.print(y);
System.out.print(z);
}
}
2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh22
{
publicstaticvoidmain(Stringargs[])
{
booleanx,y,z;
inta=12,b=24;
x=(a>b);
y=(a!
=b);
z=(a+b==36);
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("z="+z);
}
}
3、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh23{
publicstaticvoidmain(Stringargs[]){
intx,y,z=0;
for(x=1;x<=10;x++)
for(y=1;y<10;y++)
{
if(x==5)
continue;
if(y>5)
break;
z++;
}
System.out.println("z="+z);
}
}
4.金额的中文大写形式。
编写程序。
具体要求见教材P63。
三、思考题
1.break,continue在流程控制中的作用。
2.Java运算符的优先级与结合性是怎样的?
3.&和&&有什么区别?
4.Java程序中可以定义中文字符的变量吗?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验三类的设计与使用
一、实验目的
1、熟练掌握类、对象的的概念以及对事物的抽象。
2、熟练掌握成员、方法的概念以及构造方法的概念。
3、熟练掌握封装性,多态性的概念
4、理解面向对象的程序设计方法。
二、实验内容与要求
1.设计复数类
设计一个复数类,成员变量包括实部和虚部,成员方法包括实现复数的加法、减法、比较、转换成字符串输出等。
publicclassComplex
{
privatedoublereal,im;//实部,虚部
publicComplex(doublereal,doubleim)//构造方法
{
this.real=real;
this.im=im;
}
publicComplex(doublereal)//构造方法重载
{
this(real,0);
}
publicComplex()
{
this(0,0);
}
publicComplex(Complexc)//拷贝构造方法
{
this(c.real,c.im);
}
publicbooleanequals(Complexc)//比较两个对象是否相等
{
returnthis.real==c.real&&this.im==c.im;
}
publicStringtoString()
{
return"("+this.real+"+"+this.im+"i)";
}
publicvoidadd(Complexc)//两个对象相加
{//改变当前对象,没有返回新对象
this.real+=c.real;
this.im+=c.im;
}
publicComplexplus(Complexc)//两个对象相加,与add()方法参数一样不能重载
{//返回新创建对象,没有改变当前对象
returnnewComplex(this.real+c.real,this.im+c.im);
}
publicvoidsubtract(Complexc)//两个对象相减
{//改变当前对象,没有返回新对象
this.real-=c.real;
this.im-=c.im;
}
publicComplexminus(Complexc)//两个对象相减,与subtract()方法参数一样不能重载
{//返回新创建的对象,没有改变当前对象
returnnewComplex(this.real-c.real,this.im-c.im);
}
}
classComplex__ex
{
publicstaticvoidmain(Stringargs[])
{
Complexa=newComplex(1,2);
Complexb=newComplex(3,5);
Complexc=a.plus(b);//返回新创建对象
System.out.println(a+"+"+b+"="+c);
}
}
2、定义一个类实现银行帐户的概念,成员变量有"帐号"和"存款余额"等,成员方法有"存款"、"取款"、"查询余额"和”显示帐号”等。
定义主类,创建帐户类的对象,并完成相应操作。
三、思考题
1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?
这种变量称为什么?
方法的形式参数是否可以在方法之外使用?
2.为什么说构造函数是一种特殊的方法?
特殊在哪里?
构造函数什么时候执行?
被谁调用?
3.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?
4.同名的不同方法共存的情况称为什么?
如何区分这些同名方法?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验四设计实现接口的类
一、实验目的
理解接口,设计实现接口的类
二、实验内容与要求
1.请仔细阅读下面程序,体会接口的使用方法。
该程序的功能是计算某商店商品的销售总额。
interfaceComputeTotalSales
{
publicdoubletotalSalesByYear();
}
classTelevisionimplementsComputeTotalSales
{
publicdoubletotalSalesByYear()
{
return50000.456;
}
}
classComputerimplementsComputeTotalSales
{
publicdoubletotalSalesByYear()
{
return50000.456;
}
}
classMobileimplementsComputeTotalSales
{
publicdoubletotalSalesByYear()
{
return50000.456;
}
}
classShop
{
ComputeTotalSales[]goods;
doubletotalSales=0;
Shop(ComputeTotalSales[]goods)
{
this.goods=goods;
}
publicdoublegiveTotalSales()
{
totalSales=0;
for(inti=0;i{
totalSales=totalSales+goods[i].totalSalesByYear();
}
returntotalSales;
}
}
publicclassHappySale
{
publicstaticvoidmain(Stringargs[])
{
ComputeTotalSales[]goods=newComputeTotalSales[50];
for(inti=0;i{
if(i%3==0)
goods[i]=newTelevision();
elseif(i%3==1)
goods[i]=newComputer();
elseif(i%3==2)
goods[i]=newMobile();
}
Shopshop=newShop(goods);
System.out.println("商店年销售额:
"+shop.giveTotalSales());
}
}
2、为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。
现有两种工具:
Car007和Plane,其中Car007的速度运算公式为:
A*B/C,Plane的速度运算公式为:
A+B+C。
需要编写三类:
ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序。
三、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验五异常处理
一、实验目的
1、理解什么是异常
2、掌握java的异常处理机制和方法
二、实验内容与要求
1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
mportjava.io.*;
publicclassCh61{
publicstaticvoidmain(Stringargs[])throwsIOException{
int[]ko=newint[15];
intn,a;
Stringx;
BufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in));
System.out.print("Enteraninteger:
");
x=keyin.readLine();
n=Integer.parseInt(x);
try{
a=110/n;
ko[15]=100;
System.out.println("此描述无法执行!
");
}catch(ArithmeticExceptione){
System.out.println("除数为0的错误");
}catch(ArrayIndexOutOfBoundsExceptionf){
System.out.println("数组索引值大于数组长度的错误!
");
}
System.out.println("执行完catch的描述!
!
!
");
}
}
2.运行下面的程序,自己给出程序的运行结果。
importjava.io.*;
publicclassCh62{
publicCh62(){
try{
inta[]=newint[2];
a[4]=3;
System.out.println("Afterhandlingexceptionreturnhere?
");
}catch(IndexOutOfBoundsExceptione){
System.err.println("exceptionmsg:
"+e.getMessage());
System.err.println("exceptionstring:
"+e.toString());
e.printStackTrace();
}finally{
System.out.println("-------------------");
System.out.println("finally");
}
System.out.println("Noexception?
");
}
publicstaticvoidmain(Stringargs[]){
newCh62();
}
}
3、自定义异常类。
请为下面的Date2类定义一个异常类,当set方法的3个整形参数不能构成一个合法的日期时候,抛出异常,Date2类中的其他方法将捕获并处理该异常。
publicclassDate2//公有的类,与源程序文件同名
{
privateintyear,month,day;//私有的成员变量
publicDate2(inty,intm,intd)//指定参数的构造方法
{
set(y,m,d);//可以调用定义在后面的成员方法
}
publicvoidset(inty,intm,intd)//公有的成员方法,设置日期值,算法不全
{
this.year=y;
this.month=((m>=1)&(m<=12))?
m:
1;
this.day=((d>=1)&(d<=31))?
d:
1;
}
}
三、思考题
1.本实验的实验内容2中,finally程序块的作用是什么?
2.异常分为哪两类?
3.如果申明inta[]=newint[-10];应属于那类异常
4.比较throw和throws两者的用法上的区别。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验六图形用户界面设计
一、实验目的
1.掌握常用GUI控制组件的使用方法。
2.掌握事件处理的方法。
3.了解swing控件的概念。
二、实验内容
1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。
2.编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。
3.设计计算器,要求见教材P212。
三、思考题
1.Java的事件处理机制是怎样的?
2.若一个数据只有两种取值可能,采用哪种组件表示比较合适?
如果有二种到三种取值可能,采用哪种合适?
如果取值的可能大于5个,采用哪种组件合适?
3.事件监听器和事件适配器的关系是什么?
4.编程包含两个按钮和一个标签,将发生单击事件的按钮上的文本信息显示在标签中。
提示:
关键代码如下:
b1.addActionListener(newB1());
b2.addActionListener(newB2());
classB1implementsActionListener{
publicvoidactionPerformed(ActionEvente){
who.setText("Button1");
}
}
classB2implementsActionListener{
publicvoidactionPerformed(ActionEvente){
who.setText("Button2");
}
}
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
2、编写实验报告,在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验七Applet应用程序设计
一、实验目的
1.掌握JavaApplet程序结构和开发过程
2.了解Applet运行机制
3.学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法。
4.了解Applet与浏览器的通信。
5.掌握在Applet图形界面设计。
二、实验内容与要求
1.JavaApplet程序开发过程
输入一个applet源程序,学习编辑、编译、运行程序的方法。
简单的Applet小程序
例//HelloWorldApplet.java
importjava.awt.*;
importjava.applet.*;
publicclassHelloWorldAppletextendsApplet{//anapplet
publicvoidpaint(Graphicsg){
g.drawString(″HelloWorldinApplet!
″,20,20);
}
}
这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。
为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译:
得到字节码文件HelloWorldApplet.class。
由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。
它的文件如下: