




已阅读5页,还剩102页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计实验指导书李贵荣 编湖北汽车工业学院电气工程系2005-3-10前 言一、上机实验目的 上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解 Java 语言的基本结构和程序设计方法。通过亲手编程掌握 Java 语言编程的方法。 二、实验基本内容 为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了7个实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的7个实验如下。 1Java 编程环境使用。 2Java 类编程练习。 3图形用户界面设计。 4Java事件处理。 5多线程程序设计。 6网络程序设计。 7综合实验-网络五子棋游戏设计。三、实验任务与时间安排 Java语言程序设计是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。Java 语言上机实验时间为18学时,与教学内容同时进行上机实验。18 个上机学时分为6个实验(实验一实验六),每个实验3学时,实验七为选做实验。目 录实验一 Java 编程环境使用1一、实验目的1二、实验要求1(一) 声明不同数据类型的变量1(二) 了解变量的使用范围2(三) 使用关系运算符和逻辑运算符3(四) 使用数组3(五) 使用表达式语句与复合语句4(六) 使用选择语句5(七) 使用循环语句7实验二 面向类编程练习10一、实验目的10二、实验要求10三、实验内容10(一) 创建 Applet 应用小程序10(二) 创建对象并使用对象11(三) 类的继承性练习13实验三 图形用户界面设计17一、实验目的17二、实验要求17三、实验内容17(一) 创建图形用户界面17(二)使用 Swing 组件18(三)使用图形类 Graphics、Graphics2D19实验四 Java事件处理22一、实验目的22二、实验要求22三、实验内容22(一) 处理点击按钮事件22(二)键盘事件24(三) 使用接口技术27实验五 多线程程序设计32一、实验目的32二、实验要求32三、 实验内容32(一)线程编写练习32(二)计算机动画36(三)多线程程序38实验六 网络程序设计43一、实验目的43二、 实验要求43三、 实验内容43(一) 练习使用InetAddress类43(二)练习使用Socket和ServerSocket进行套接字编程44(三)练习使用DatagramPacket数据报类46(四)综合运用50实验一 Java 编程环境使用一、实验目的 1掌握下载 Java SDK 软件包、学会设置Java环境变量。 2掌握在Dos环境下Java编译和运行的方法。 3掌握JBuilder / Eclipse集成开发工具的使用方法。4掌握 Java 基本数据类型、运算符与表达式、数组的使用方法。 5理解并握Java程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。 二、实验要求 1安装并设置 Java SDK 软件包。 2用记事本编写一个简单的 Java 程序,在屏幕上输出”hello,java”。 public class Hello public static void main(String args) System.out.println(hello,java!); 3掌握运行 Java 程序的步骤。 4在JBuilder / Eclipse环境下编写并运行下面的程序。(1)编写一个声明 Java 不同数据类型变量的程序。(2)编写一个使用运算符、表达式、变量的程序。 (3)编写一个使用 Java 数组的的程序。 (4)编写表达式语句、复合语句的程序。 (5)编写使用不同选择结构的程序。 (6)编写使用不同循环结构的程序。 (一) 声明不同数据类型的变量 1编写声明不同数据类型变量的程序文件 LX1_1.java,源代码如下。 public class LX1_1 public static void main(String args) byte b=0x55; short s=0x55ff; int i=1000000; long l=0xffffL; char c=a; float f=0.23F; double d=0.7E-3; boolean B=true; String S=这是字符串类数据类型; System.out.println(字节型变量 b = +b); System.out.println(短整型变量 s = +s); System.out.println( 整型变量 i = +i); System.out.println(长整型变量 l = +l); System.out.println(字符型变量 c = +c); System.out.println(浮点型变量 f = +f); System.out.println(双精度变量 d = +d); System.out.println(布尔型变量 B = +B); System.out.println(字符串类对象 S = +S); 2编译并运行该程序(二) 了解变量的使用范围 1建立 LX1_2.java 文件,通过本程序了解变量的使用范围,源代码如下。 public class LX2_2 static int i=10; public static void main(String args) int k=10; System.out.println(i=+i); System.out.println(k=+k); System.out.println(i=+i); System.out.println(k=+k); /编译时将出错,已出 k 的使用范围 2编译 LX1_2.java 此时会出现错误提示。因为变量 k 在方法块中声明,在方法块之外它是不存在的, 所以编译时会出错。 3修改上面的程序。4成功运行该程序。 思考:LX1_2.java 程序说明了什么问题? (三) 使用关系运算符和逻辑运算符 1建立使用关系运算符和逻辑运算符的程序文件,源代码如下。 class LX1_3 public static void main(String args) int a=25, b=20, e=3, f=0; boolean d=ab; System.out.println(a=25,b=20,e=3,f=0); System.out.println(因为关系表达式 a5) System.out.println(因为 e 非 0 且 a/e 为 8 大于 5,所以输出 a/e +a/e); if (f!=0 & a/f5) System.out.println(a/f = +a/f); else System.out.println(因为 f 值为 0,所以输出 f = +f); 2编译并运行该程序,结果如图 2.3 所示。(四) 使用数组 1建立使用数组的程序,本程序建立了一个长度为 5 的 1 维数组,一个长度为 12 的 2 维数组, 源代码如下。 public class LX1_4 public static void main(String args) int a=new int5; int arr1=new int34; a0=10; a1=10+a0; a2=30; a3=40; a4= a1+ a2; arr100=0; arr101=1; arr102=2; arr110=3; arr111=4; arr112=5; arr120=6; arr121=7; arr122=8; System.out.println(a+0+ = +a0); System.out.println(a+1+ = +a1); System.out.println(a+2+ = +a2); System.out.println(a+3+ = +a3); System.out.println(a+4+ = +a4); System.out.println(arr1(+0+,+0+) = +arr100); System.out.println(arr1(+0+,+1+) = +arr101); System.out.println(arr1(+0+,+2+) = +arr102); System.out.println(arr1(+1+,+0+) = +arr110); System.out.println(arr1(+1+,+1+) = +arr111); System.out.println(arr1(+1+,+2+) = +arr112); 2编译并运行程序(五) 使用表达式语句与复合语句 1 建立包含表达式语句程序,源代码如下。 class LX1_5 public static void main(String args) int k, i=3, j=4; k=20*8/4+i+j*i; System.out.println(表达式(20*8/4+i+j*i)+k); 2 建立包含复合语句程序,源代码如下。 class LX1_6 public static void main(String args) int k, i=3, j=4; k=i+j; System.out.println(在复合块外的输出 k=+k); float f; f=j+4.5F; i+; System.out.println(在复合块内的输出 f=+f); System.out.println(在复合块内的输出 k=+k); System.out.println(在复合块外的输出 i=+i); 3编译并运行上述两个源程序4将变量 i 在块内定义会怎样?改变其他变量的位置看看会发生什么变化。 思考:指出程序的复合结构以及变量的使用范围。 (六) 使用选择语句 1使用 if.else 语句 (1)程序功能:使用 if.else 语句构造多分支,判断某一年是否为闰年。闰年的条件是符合下面二者之一:能被 4 整除,但不能被 100 整除;能被 4 整除,又能被 100 整除。 (2)编写源程序文件,代码如下。 public class LX1_7 public static void main(String args) boolean leap; int year=2005; if (year%4=0 & year%100!=0) | (year%400=0) / 方法 1 System.out.println(year+ 年是闰年); else System.out.println(year+ 年不是闰年); year=2008; / 方法 2 if (year%4!=0) leap=false; else if (year%100!=0) leap=true; else if (year%400!=0) leap=false; else leap=true; if (leap=true) System.out.println(year+ 年是闰年); else System.out.println(year+ 年不是闰年); year=2050; / 方法 3 if (year%4=0) if (year%100=0) if (year%400=0) leap=true; else leap=false; else leap=false; else leap=false; if (leap=true) System.out.println(year+ 年是闰年); else System.out.println(year+ 年不是闰年); (3)编译运行程序思考:本程序中有几个选择语句,哪些具有嵌套关系? 2使用 switch 语句 (1)程序功能:在不同温度时显示不同的解释说明。 (2)程序源代码如下。 class LX1_8 public static void main(String args) int c=38; switch (c10?1:c25?2:c35?3:4) case 1: System.out.println( +c+ 有点冷。要多穿衣服。); case 2: System.out.println( +c+ 正合适。出去玩吧。); case 3: System.out.println( +c+ 有点热。); default: System.out.println( +c+ 太热了!开空调。); (3)编译运行程序(七) 使用循环语句 1 for 循环语句练习 (1) 程序功能:按 5 度的增量打印出一个从摄氏温度到华氏温度的转换表。 (2) 程序源代码如下。 class LX1_9 public static void main (String args) int h,c; System.out.println(摄氏温度 华氏温度); for (c=0; c=40; c+=5) h=c*9/5+32; System.out.println( +c+ +h); (3)编译并运行程序,其结果如图 2.9 所示。 2 while 循环语句练习 (1)程序功能:运行程序后从键盘输入数字 1/2/3 后,可显示抽奖得到的奖品;如果输入其它数 字或字符显示“没有奖品给你!”。 (2)程序源代码如下。 import java.io.*; class LX1_10 public static void main(String args) throws IOException char ch; System.out.println(按 1/2/3 数字键可得大奖!); System.out.println(按空格键后回车可退出循环操作.); while (ch=(char)System.in.read()!= ) System.in.skip(2); / 跳过回车键 switch (ch) case 1: System.out.println(恭喜你得大奖,一辆汽车!); break; case 2: System.out.println(不错呀,你得到一台笔记本电脑!); break; case 3: System.out.println(没有白来,你得到一台冰箱!); break; default: System.out.println(真不幸,你没有奖品!下次再来吧。); (3)编译源程序。 (4)在命令提示符窗口运行程序,然后分别按 1、2、3、r ,记录结果。3dowhile 循环语句练习 (1) 程序功能:求 12+100 之和,并将求和表达式与所求的和显示出来。 (2) 程序源代码如下。 class LX1_11 public static void main(String args) int n=1, sum=0; do sum+=n+; while (n=100); System.out.println(1+2.+100 =+sum); (3)编译并运行程序,结果如图 2.11 所示。 4多重循环练习 (1)输出九九乘法表的程序,源代码如下。 public class LX1_12 public static void main(String args) int i,j,n=9; System.out.print( * |); for (i=1;i=n;i+) System.out.print( +i); System.out.print(n-|); for (i=1;i=n;i+) System.out.print(-); System.out.println(); for (i=1;i=n;i+) System.out.print( +i+ |); for (j=1;j=i;j+) System.out.print( +i*j); System.out.println(); 习题:1、 求一个整数的20%是多少,要求结果为整数(小数部分四舍五入),用以下表达式存在什么问题?应该怎样写表达式?int a,b;b=a*20/100;2、 编写一个程序,求圆的面积,要求圆的半径从键盘输入。3、 编写一个程序,求一下函数的值(x从键盘输入): 4、 分别使用for循环,while循环,do循环求1到100之间所有能被3整除的整数的和。5、 由键盘输入一个成绩a,使用switch结构求出a的等级。A:90100,B:8089,C:7079,D:6069,E:0596、在一个有8个整数(18、25、7、36、13、2、89、63)的数组中找出其中最大的数及其下标。实验二 Java类编程练习一、实验目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及 如何创建类和对象,了解成员变量和成员方法的特性,掌握 OOP 方式进行程序设计的方法,了解类的 继承性和多态性的作用。 二、实验要求 1编写一个体现面向对象思想的程序。 2编写一个创建对象和使用对象的方法的程序。3编写一个显示当前日期和时间的程序。 4编写不同成员变量修饰方法的程序。 5编写不同成员方法修饰方法的程序。 6编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。 7编写体现类的多态性(成员方法重载、构造方法重载)的程序。 8掌握内部类的定义方式,学会使用内部类。9掌握接口的定义方式,编写一个接口并实现该接口。三、实验内容 (一) 创建 Applet 应用小程序 1创建一个 Applet 应用程序 LX2_1.java 文件。 (1)程序功能:建立一个 Applet 小程序,使其可以进行简单的加法运算。该程序要包含类、接口、属性、方法、事件等面向对象的基本元素。 (2)程序源代码如下。 import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class LX2_1 extends Applet implements ActionListener Label label1=new Label(+); Label label2=new Label(=); TextField field1=new TextField(6); TextField field2=new TextField(6); TextField field3=new TextField(6); Button button1=new Button(相加); public void init() / 初始化 add(field1); add(label1); add(field2); add(label2); add(field3); add(button1); button1.addActionListener(this); public void actionPerformed(ActionEvent e) / 处理按钮事件 int x=Integer.parseInt(field1.getText()+Integer.parseInt(field2.getText(); field3.setText(Integer.toString(x); / 数值转换为字符串 2编写一个浏览 Applet 应用程序的页面文件 LX2_1.HTML,源代码如。 3 将 LX2_1.java 源程序编译为 LX2_1.class 文件 4使用浏览器浏览 LX2_1.HTML 文件。(二) 创建对象并使用对象 1编写 Applet 程序 (1)程序功能:这个 Applet 程序要在页面上输出两个矩形,并伴有文字输出。 (2)LX2_2.java 程序的源代码如下。 import java.awt.*; import java.applet.Applet; public class LX2_2 extends Applet MyBox b1=new MyBox();/创建对象 b1 MyBox b2=new MyBox(170,20,60,60); /创建对象 b2 public void paint(Graphics g) b1.setPosition(20,20); b1.setSize(60,60); b1.draw(g); g.drawString(矩形 1 的 X 位置: +b1.getX(), 20, 100); g.drawString(矩形 1 的 Y 位置: +b1.getY(), 20, 120); b2.draw(g); g.drawString(矩形 2 的 X 位置: +b2.getX(), b2.getX(), b2.getY()+80); g.drawString(矩形 2 的 Y 位置: +b2.getY(), b2.getX(), b2.getY()+100); class MyBox private int x, y, width, height; MyBox() x=0; y=0; width=0; height=0; MyBox(int xPos, int yPos, int w, int h) x=xPos; y=yPos; width=w; height=h; public void setPosition (int xPos, int yPos) x=xPos; y=yPos; public void setSize (int w, int h) width=w; height=h; public int getX() return x; public int getY() return y; public void draw(Graphics g) g.drawRect(x, y, width, height); 2编写一个浏览 Applet 应用程序的页面文件 LX2_2.HTML 3将 LX2_2.java 源程序编译为 LX2_2.class 文件 4使用浏览器查看器浏览LX2_2.HTML文件。思考:程序的结构。类与对象的关系。对象创建、使用、销毁的过程。(三) 类的继承性练习 1进一步理解继承的含义 新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类 还可添加新的变量和方法。这种现象就称为类的继承。 当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。Java 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。2创建公共类 LX2_7_P (1)编写程序文件 LX2_7_P.java,源代码如下。 public class LX2_7_P protected String xm; /具有保护修饰符的成员变量 protected int xh; void setdata(String m,int h) /设置数据的方法 xm =m; xh = h; public void print() /输出数据的方法 System.out.println(xm+, +xh); (2)编译 LX2_7_P.java,产生类文件 LX2_7_P.class。 3创建继承的类 (1)程序功能:通过 LX2_7_P 类产生子类 LX2_8,其不仅具有父类的成员变量 xm(姓名)、xh(学号),还定义了新成员变量 xy(学院)、xi(系)。在程序中调用了父类的 print 方法,同时可以看出子类也具有该方法。(2)编写 LX2_8.java 程序,源代码如下。 class LX2_8 extends LX2_7_P protected String xy; protected String xi; public static void main(String args) LX2_7_P p1 = new LX2_7_P(); p1.setdata(帅零,12321) ; p1.print(); LX2_8 s1 = new LX2_8() ; s1.setdata(郭丽娜,12345); /调用父类的成员方法 s1.xy=经济管理学院; /访问本类的成员变量 s1.xi=信息管理系; /访问本类的成员变量 s1.print(); System.out.print(s1.xm+, +s1.xy+, +s1.xi); (3)编译并运行程序注意:公共类 LX2_7_P 与 LX2_8 类要在同一文件夹(路径)内。 4内部类内部类是在另一个类的体中被声明的类。在某些情况下使用内部类可以使你以更易理解的方式组织代码,在有些场合,可以使编译器更好地优化代码。编写下面的程序: public class Outer class Inner public Inner(double initialBalance)balance = initialBalance;public void print() System.out.println(balance is + balance);private double balance;public static void main(String args) Outer outer = new Outer(); Outer.Inner inner=outer.new Inner(10000); inner.print(); 编译并运行程序,体会内部的使用方式。5接口在Java中接口不是一个类,而是对符合接口需求的类的一套规范。Java中对象进行比较,必须有如下前提:对象必须实现Comparable接口,下面是一个例子: public interface Comparable int compareTo ( Object other); 如“雇员”类:class Employee implements Comparable public Employee(String n, double s) name = n; salary = s; public String getName() return name; public double getSalary() return salary; public void raiseSalary(double byPercent) double raise = salary * byPercent / 100; salary += raise; public int compareTo(Object otherObject) Employee other = (Employee)otherObject; if (salary other.salary) return 1; return 0; private String name; private double salary;下面是对一个“雇员”数组进行排序:import java.util.*;public class EmployeeSortTest public static void main(String args) Employee staff = new Employee3; staff0 = new Employee(Harry Hacker, 35000); staff1 = new Employee(Carl Cracker, 75000); staff2 = new Employee(Tony Tester, 38000); Arrays.sort(staff); / print out information about all Employee objects for (int i = 0; i staff.length; i+) Employee e = staffi; System.out.println(name= + e.getName() + ,salary= + e.getSalary(); 习题:1、设计一个汽车类Auto,有速度属性speed,另外有启动、加速speedup和停止stop方法,然后,设计一个子类Bus表示公汽,Bus增加一个属性passenger表示乘客数。另外添加两个方法geton和getoff表示乘客上车和下车。运行时,在屏幕上显示如下内容:公汽启动,加速,现速度为30km/h,公汽上有20名乘客到站停车,有4人上车,有6人下车,公汽上有18名乘客2、设计一个抽象类CompareObject,里面有抽象方法compareTo用于比较两个对象。然后设计一个类Position从CompareObject派生,有x和y属性表示其坐标,该类实现compareTo方法,用于比较两个对象距离原点(0,0)的距离之差。3、将第2题的功能改用接口来实现。实验三 图形用户界面设计一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届陕西省西安市莲湖区化学高三第一学期期中调研试题含解析
- 山东省济南市实验中学2026届化学高一第一学期期末质量跟踪监视试题含解析
- 2025年秋季部编版初中数学教学设计八年级上册13.4 课题学习 最短路径问题
- 圣诞节公司活动策划方案
- 五一劳动节文艺晚会策划方案
- 幼儿园活动实施策划方案
- 关于初三体育教学工作方案
- 大班配班个人工作方案
- 电仪监理面试题及答案
- 中平电动车考试试题及答案
- 防洪防汛应急处置措施
- 葫芦岛打渔山 220kV 输变电工程环评报告
- 08SG213-1 钢烟囱(自立式30m-60m)(不清晰有水印)
- 社会团体单位会员登记表完整
- GB/T 531.1-2008硫化橡胶或热塑性橡胶压入硬度试验方法第1部分:邵氏硬度计法(邵尔硬度)
- 中航工业运营管理体系内容介绍课件
- 消化系统疾病课件整理
- 子宫肉瘤诊疗指南
- 培训注塑成型原理
- 2009-2022历年江苏省镇江市丹阳市事业单位考试《综合知识和能力素质(计算机类岗位)》真题含答案2022-2023上岸必备带详解版3
- 交流电气装置的过电压保护及绝缘配合
评论
0/150
提交评论