Java程序设计实验指导.docx
《Java程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验指导.docx(16页珍藏版)》请在冰豆网上搜索。
Java程序设计实验指导
附一、实验报告填写方法
附1.1实验开发环境
1.硬件:
IntelP42.4G/256M/40GPC机一套;
2.软件:
WindowsXP+j2sdk1.5.0+JCreatorPro3.1.0+(MSAccess2000)
附1.2实验过程要求
1.在上课的同时,将每个实验预习的每个例题直接完成在实验指导书上;
2.在实验之前,将实验要求的程序写在草稿本上;
3.每次实验之前需要把实验指导书和写有程序的草稿纸带上,以备检查,否则不能进入实验室。
4.实验过程中,不能做与实验无关的事情(如:
打游戏、看其他书籍),否则本次实验成绩记0分,在遇到问题的时候举手提问,同学之间交流的声音不可太大。
附1.3实验报告内容填写
1.第1页:
填写
(1)实验目的、
(2)实验要求
2.第2页~第3页:
填写(3)实验程序源代码
3.第4页:
填写(4)实验运行结果、(5)实验总结
实验一:
Java基础程序设计
Java程序设计语言同大多数程序设计语言一样,具有一些基本特性。
本节实验主要练习Java编程语言的这些基本特性,如Java中的简单数据类型,运算符和表达式,这是学习Java语言必须经过的基础阶段。
掌握了本节实验所讲述的内容后,应该能够对Java程序的构成有一个基本的理解,能够灵活运用Java语言提供的各种数据类型和运算符。
学好Java语言必须具备扎实的语言基础,这对后续学习是很有必要的。
Java程序通过控制语句来执行程序流,完成一定的任务。
程序流是由若干个语句组成的,语句可以是单一的一条语句,也可以是用大括号{}括起来的一个复合语句。
Java中的控制语句主要有分支语句(if-else,switch).循环语句(while,do-while,for)与程序转移有关的跳转语句(break,continue,return)。
本节实验将学习如何控制程序的流程,使程序实现不同功能。
1.1实验目的:
1.掌握Java语言的数据类型。
2.掌握Java语言的运算符和表达式。
3.掌握Java语言的运算符的优先级。
4.学会使用if和if-else和switch分支语句。
5.学会使用while,do-while和for循环语句。
6.学会使用break和continue程序控制语句。
7.进一步熟悉java语言开发环境,掌握Java程序的编辑,编译和运行过程;能够设计具有一定算法的输出程序。
1.2实验预习:
1.Java语言源程序是由Java语言的基本语句构成的,Java语言的语句基本上同C/C++语言的语句一样。
有些在C/C++语言程序中容易产生错误的语句已被Java语言所抛弃。
通过下面的实验步骤,读者可以编写简单的Java程序。
例1-1在横线上填出下列变量的定义类型。
publicclassexample1{
publicstaticvoidmain(stringargs[]){
_________________x=45;
_________________y=3.14f;
_________________z=3.1415;
_________________truth=true;
_________________c=’6’;
//……..更多
}
}
2.利用输出语句来实现数据的格式化显示
Java语言中的输出语句,可以通过调用System.out中的println方法(或print方法),在练习数据格式化显示之前,我们在通过下面两个简单的例子对比一下println方法和print方法的区别。
例1-2观察下面应用程序的打印结果。
打开文本编辑器,输入下列代码:
publicclassasterisk{
publicstaticvoidmain(stringargs[]){
System.out.print(“*”);
System.out.print(“***”);
System.out.print(“*****”);
}
}
在没有编译运行之前,读者能否得出上面程序的运行结果:
_____________________________________
______________________________________
_____________________________________
例1-3修改例1-2。
publicclassasterisk{
publicstaticvoidmain(Stringargs[]){
System.out.println(“*”);
System.out.println(“***”);
System.out.println(“*****”);
}
}
在没有编译运行之前,读者能否得出上面程序的运行结果:
_____________________________________
______________________________________
_____________________________________
例1-4编写一个1+2+3+…..+n的程序。
2.JavaApplet的程序设计。
Applet就是使用Java语言编写的一段代码,它可以在浏览器环境中运行。
Applet与Application的区别主要在于其执行方式的不同:
Application是从其中的main()方法始运行的,而Applet是在浏览器中运行的,必须创建一个HTML支件,通过编写Html语言代码告诉浏览器载入何种Applet以及如何运行。
1)编写java程序文件
打开文本编辑器,输入下列代码:
importjava.awt.Graphics;
importjava.applet.Applet;
publicclassMyFirstAppletextendsApplet{
publicStrings;
publicvoidinit(){
s="JavaWorld!
";
}
publicvoidpaint(Graphicsg){
g.drawString(s,5,25);
}
}
2)创建HTML文件件
在运行创建的MyFirstApplet.class之前,还需创建一个HTML文件,把Applet类放入其中,appletviewer或浏览器将通过该文件访问创建的Applet。
打开文本编辑器并输入如下代码:
代码中CODE标志指定Applet的类名,WIDTH和HEIGHT标志指定Applet的像素尺寸,编辑好后存盘,文件名是MyFirstApplet.html。
此文件名可随意确定,不是必须与类名相同。
该例中的名字也可叫HelloApplet.html。
3)运行Applet小程序
有两种方式可以运行javaApplet:
(1)在浏览器下运行,如IE、Netscape等,打开HTML文件,即可直接执行。
(2)通过Jcreator或命令行,使用AppletViewer,直接运行HTML文件。
1.3实验内容及要求:
(1)设计简单的java程序,主要包含Application和Applet两种程序。
(2)设计一个99表打印的Application程序,要求程序简单,行列对齐美观。
(3)输出100000之内的所有素数(即非1和自身不能被其他数除尽的数)要求程序简单,程序运行速度较快,行列对齐美观。
实验二:
面向对象设计基础——复数类的实现
类是面向对象程序设计的基础,是java的核心和本质所在。
在java中,所有的语言元素都必须封装在类中。
编写java程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程。
本节实验将学习类的应用,及如何创建类的实例。
通过类的继承更有效地组织程序结构,明确类之间的关系。
掌握了本节实验所讲诉的内容之后,读者就可以使用面向对象技术编写java程序了。
2.1实验目的:
1.掌握java面向对象程序设计的基本思想。
2.掌握类的定义和使用。
3.掌握对象的声明和使用。
4.了解构造函数的概念和使用。
5.掌握类的继承关系和派生方法。
6.掌握多态的概念与使用。
2.2实验预习:
在前面的实验的例题中,都定义了一个类。
那么如何编写自己的java类呢?
下面我们将从如何定义类开始,逐步学习面向对象的程序设计方法。
1)阅读下面的程序,在main()方法里添加语句完成如下功能:
①创建一个MyValue类的对象myValue。
②为myValue对象中的value赋值10。
③使用getVaule()方法获得myValue对象中的数据并将它打印在屏幕上
例2-1:
li2_1.java
classMyValue{
privateintvalue;
publicvoidsetValue(intx){
value=x;
}
publicintgetValue(){
returnvalue;
}
}
publicclassli2_1{
publicstaticvoidmain(String[]args){
____________________________________;
____________________________________;
____________________________________;
____________________________________;
}
}
2)试编写Java代码实现一个计数器类Computer其中包括:
①用counterValue来保存计数器的当前值。
②方法increment()计数器加一。
⑧方法decrement()计数器减一。
④方法reset()计数器清零。
(1)例3-1:
li2_1.java
打开文本编辑器,输入下列代码:
classTree{
intheight=0;
Stringname=newString("null");
Tree(inth){
height=h;
System.out.println("带整型参数的构造函数");
}
Tree(Stringn,inth){
this(h);//调用前一个的构造方法
this.name=n;
System.out.println("带整型和字符串型参数的构造函数");
}
Tree(){
this("香蕉树",47);
System.out.println("默认的构造函数");
}
voidshowme(){
System.out.println("产生树名为"+name+",树高为"+height);
}
}
publicclassli3_1{
publicstaticvoidmain(String[]args){
Treemytree=newTree();
mytree.showme();
}
在没有编译运行之前,能否得出上面程序的运行结果:
_____________________________________
_____________________________________
_____________________________________
_____________________________________
_____________________________________
2.3实验内容及要求:
定义一个复数类,并实现以下复数类的方法:
构造方法、得到实部、得到虚部、设置实部、设置虚部、复数的加法,减法,乘法,最后,创建对象进行运算。
1、复数类Complex必须满足如下要求:
(1)复数类Complex的属性有:
RealPart:
double型,代表复数的实数部分
ImaginPart:
double型,代表复数的虚数部分
(2)复数类Complex的方法有:
Complex():
构造函数,将复数的实部和虚部都置0。
Complex(doubler,doublei):
构造函数,形参r为实部的初值,i为虚部的初值。
doublegetReal():
获得复数对象的实部;
doublegetImagin():
获得复数对象的虚部;
booleanEquals(Complexa):
判断当前复数对象与形参复数对象是否相同,相同返回真,不相同返回假。
ComplexcomplexAdd(Complexa):
将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。
ComplexcomplexSub(Complexa):
将当前复数对象与形参复数对象相减,所得的结果仍是一个复数值,返回给此方法的调用者。
ComplexcomplexMulti(Complexa):
将当前复数对象与形参复数对象相乘,所得的结果仍是一个复数值,返回给此方法的调用者。
StringtoString():
把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据。
2、创建对象进行运算
另写一个Demo类,利用Complex类创建3个复数对象,其中两个用作源数,一个用作运算结果,对Complex类进行测试。
实验三:
身份证号码的分析
字符串、数组都是使用Java语言编写程序经常使用的数据结构,因此,熟练使用这些数据结构是进一步学习Java程序设计的基础。
与其他语言不同的是,Java中的数组和字符串是一个真正的对象,而不像其他语言那样是一个零结尾的字符数组。
通过本节的实验和练习,读者应能够熟练掌握字符串、数组的各种基本操作。
3.1实验目的:
掌握java类的核心类库的使用,熟悉java的字符串常量(String)和字符串变量(StringBuffer)对象的构造和类方法的应用。
掌握数组的定义和使用方法。
了解数组的构造方法和常用方法。
了解字符串常量与String类。
了解字符串变量与StingBuffer类。
3.2实验预习:
数组是我们最常见的一种数据结构,他的操作方法并不多,主要用于存取一些同类型的数据。
1)例4-2:
li4_2.java
打开文本编辑器,输入下列代码:
publicclassli4_2{
publicstaticvoidmain(Stringargs[]){
Stringtemp;
Stringko[]={"TurboC","QBaisc","Java","Pascal"};
intx=ko.length;
for(intm=0;mfor(intn=m+1;nif(ko[m].compareTo(ko[n])>0){
temp=ko[m];ko[m]=ko[n];ko[n]=temp;
}
}
}
for(ints=0;sSystem.out.println(ko[s]);
}
}
在没有编译运行之前,读者能否得出上面程序的运行结果:
字符串的方法比较多,下面我们通过练习,进一步理解。
2)例4-3:
li4_3.java
打开文本编辑器,输入下列代码:
importjava.lang.*;
classli4_3{
publicstaticvoidmain(Stringargs[]){
Strings1="AbCde";//定义字符串s1
Strings2="bC";//定义字符串s2
System.out.println("字符串s1为:
"+s1);
System.out.println("字符串s1长度为:
"+s1.length());
System.out.println("字符串s2为:
"+s2);
System.out.println("字符串s2长度为:
"+s2.length());
System.out.println("s1大写为:
"+s1.toUpperCase());
System.out.println("s2小写为:
"+s2.toLowerCase());
for(inti=0;iSystem.out.println("si中第"+i+"个字符是:
"+s1.charAt(i));
}
System.out.println("s1+s2="+s1+s2);
if(pareTo(s2)==0)
System.out.println("s1与s2相等");
else
System.out.println("s1与s2不相等");
if(s1.indexOf(s2)!
=-1){
System.out.println("s2是s1的子串");
System.out.println("s2在s1中的位置为:
"+s1.indexOf(s2));
}
else{
System.out.println("s2不是s1的子串");
}
System.out.println("经过以上操作,s1与s2没有变化:
");
System.out.println("字符串s1仍然为:
"+s1);
System.out.println("字符串s2仍然为:
"+s2);
}
}
在没有编译运行之前,读者能否得出上面程序的运行结果:
写于程序右方
3.3实验内容及要求:
从键盘上输入一个身份证号码:
回车之后,判断是否为正确号码(位数不为18不正确);如果正确,打印出该人的生日和性别和年龄,并测试其效验码是否正确。
最后一位为效验码。
效验码的公式为:
(Σ(ai×wi))%11
其中:
i是从右向左的包括效验码在内的序号(1-18)
ai是第i位上号码的字符值
wi是第i位上的加权因子,其数值依据公式wi=(2(i-1))%11
求出(Σ(ai×wi))%11之后依据下表得到效验码:
(Σ(ai×wi))%11
0
1
2
3
4
5
6
7
8
9
10
效验码值
1
0
X
9
8
7
6
5
4
3
2
(3)计算ab:
函数为:
java.lang.Math.pow(a,b)
(4)判断是否整数:
函数为:
java.lang.Integer.parseInt(Stringstr)
实验四:
图形界面设计
Java语言中图形用户界面(GUl)库设计目的是让程序员构建一个通过界面,让其在所有平台上都能正常显示。
基础类AWT和Swing就是为此设计的,AWT为可靠的应用程序建立图形用户界面,并且可以使开发出来的软件的清晰、友好。
本节实验将学习图形用户界面的编写。
4.1实验目的:
1)了解java.awt包及Swing的新增特性。
2)了解Java系统图形用户界面的基本工作原理和界面设计的步骤。
3)掌握图形用户界面各种布局策略的设计与使用。
4)了解图形用户界面的事件响应机制,并能进行常用的事件处理,如按钮事件、键盘事件、窗口事件等。
5)掌握图形用户界面各种常用的基本组件的使用方法及其事件响应。
4.2实验预习:
对一个优秀的应用程序来说,良好的图形用户界面是必不可少的。
因为只有图形界面,用户才能够与程序友好的交互。
缺少良好的图形用户界面,将会给用户操作应用程序带来很多不便。
创建一个完整的图形用户界面的应用程序大致流程如下:
1)引用需要的包和类。
2)设置一个顶层的容器。
3)根据需要为容器设置布局管理器或使用默认布局管理器。
4)将组件添加到容器内,位置自行设计。
5)为响应事件的组件编写事件处理代码。
下面是两个个综合实例:
例1:
ko5_1.java,这是一个窗口界面程序,试读程序,读完之后画出界面并叙述其功能。
importjava.awt.*;
importjava.awt.event.*;
classMyFrameextendsFrame{
TextFieldt1;
publicMyFrame(Stringstr){
super(str);
setLayout(newFlowLayout());
setSize(400,200);
Buttonb1=newButton("Test");
Buttonb2=newButton("Exit");
t1=newTextField(50);
//////////////////
MyListenerClassbln=newMyListenerClass();
b1.addActionListener(bln);
b2.addActionListener(bln);
/////////////////////
add(b1);
add(b2);
add(t1);
}
classMyListenerClassimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand()=="Test"){
t1.setText(t1.getText()+"b1..Hit..");
}else{
System.exit(0);
}
}
}
}
publicclassFrameEventDemo{
publicstaticvoidmain(Stringargs[]){
MyFramefr=newMyFrame("EventTest");
fr.show();
}
}
例2:
将上述程序修改为有一个输入框和一个输出框的界面,能输入数据并计算结果。
4.3实验内容及要求:
制作如图一个留言板的界面,并按要求加入所需控件,并能按要求进行窗口控件的布局。
并按要求为按钮、文本框、窗口添加事件,使之实现提交显示留言,清屏,留言至顶和至尾。
注意:
清屏代表清除留言内容,至顶和至尾需要移动文本区域里面的光标(setCaretPosition(int位置)),使其指向第一个位置和最后一个位置。