Java实验指导书

更新时间:2023-10-17 13:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Java实验指导书

目 录

实验1 Java编程基础 ................................................................................................... 1 实验2 面向对象基础................................................................................................... 5 实验3 Java常用类库 ................................................................................................ 12 实验4 集合与泛型..................................................................................................... 20 实验5 多线程............................................................................................................. 24 实验6 Java I/O ........................................................................................................... 29 实验7 图形界面设计................................................................................................. 33 实验8 网络编程......................................................................................................... 39

2

实验1 Java编程基础

一、实验目的

1、熟悉MyEclipse集成开发环境; 2、掌握定义变量和使用运算符;

3、掌握条件、循环语句的使用,能分析循环的执行过程; 4、掌握一维数组的定义和使用。

二、实验环境

MyEclipse/Eclipse

三、实验内容

(一)基本指导

1、题目:利用级数和求π,直到最后一项的绝对值小于10-6为止。求π的公式为:

π/4 = 1? 1/3 + 1/5 ? 1/7 + 1/9 ? ···

图E1-1 程序及运行结果

操作步骤:

(1)启动MyEclipse,新建一个Java工程:选择菜单File->New->Java Project,就会弹出创建Java 项目的界面。在创建Java 项目的界面中,Project name的文本框用来输入新创建Java 项目的项目名称,这里我们输入“Experiment1”。单击Finish按钮完成工程的创建。

(2)在Package Explorer窗口中单击工程Experiment1前面的“+”号,在“src”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面。在创建Java类界面中,Name表示类名,这里我们输入“CalculatePI”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为CalculatePI的主类(包含main方法的类)。

1

(3)在main方法中输入程序并点击工具栏运行按钮,结果如图E1-1所示。 2、题目:猜数字游戏

随机产生一个1-100之间的数(方法:(int)(Math.random()*100)+1),输入你的猜测试数据,然后程序比较输出提示“大了”或“小了”,直到猜中为止。 操作步骤:

(1)启动MyEclipse,在Package Explorer窗口中单击工程Experiment1前面的“+”号,在“src”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面。在Name文本框中输入“GuessingNumber”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为GuessingNumber的主类。

(2)在main方法中输入程序。这里使用了Scanner类,由于没有引入它,所以Scanner下出现了波浪线,表示出现了错误。这时可以把鼠标指针放到带波浪线的错误处,会出现改正提示,我们用鼠标点击第一个改正提示,引入Scanner类,如图E1-2所示。没有错误了,点击工具栏运行按钮,结果如图E1-3所示。

图E1-2 改正提示

图E1-3 程序及运行结果

3、题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

操作步骤:

(1)启动MyEclipse,在Package Explorer窗口中单击工程Experiment1前面的“+”号,在“src”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界

2

面,在Name文本框中输入“Encrypt”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为Encrypt的主类。

(2)在Encrypt类的main方法中输入代码如下:

import java.util.Scanner; public class Encrypt { }

public static void main(String[] args) { }

Scanner s = new Scanner(System.in); int num = 0, temp; do {

System.out.print(\请输入一个4位正整数:\); num = s.nextInt();

} while (num < 1000 || num > 9999); int a[] = new int[4];

a[0] = num / 1000; // 取千位的数字 a[1] = (num / 100) % 10; // 取百位的数字 a[2] = (num / 10) % 10; // 取十位的数字 a[3] = num % 10; // 取个位的数字 for (int j = 0; j < 4; j++) { }

for (int j = 0; j <= 1; j++) { }

System.out.print(\加密后的数字为:\); for (int j = 0; j < 4; j++)

System.out.print(a[j]); temp = a[j]; a[j] = a[3 - j]; a[3 - j] = temp; a[j] += 5; a[j] %= 10;

(3)点击工具栏运行按钮,运行结果如图E1-4所示。

图E1-4 运行结果

(二)实验练习题

1、使用循环语句输出如下图案:

* *** ***** *******

3

}

public String phoneType() { }

return(\这是移动电话\);

(4)在Package Explorer窗口中工程Experiment2下的“src”下的“phone”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Name文本框中输入“Fixedphone”,单击Superclass后的“Browse...”按钮,在弹出的窗口中的“Choose a type:”文本框中输入“Phone”,单击OK按钮返回,单击Finish按钮完成类的创建。这样就创建了一个名称为Fixedphone的类。输入如下代码:

package phone;

public class Fixedphone extends Phone {

public Fixedphone() { }

public Fixedphone(String phoneCode) { } /*

* 重写Phone 父类中的方法 */ @Override }

public void call(){ // 打电话 }

System.out.println(\用固定电话打电话,电话号码:\+getPhoneCode());

super(phoneCode); // 调用父类的构造方法 super();

@Override

public String phoneType() { }

return(\这是固定电话\);

(5)在Package Explorer窗口中工程Experiment2下的“src”下的“phone”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Name文本框中输入“Cordlessphone”,单击Superclass后的“Browse...”按钮,在弹出的窗口中的“Choose a type:”文本框中输入“Fixedphone”,单击OK按钮返回,再单击Interfaces后的“Add...”按钮,在弹出的窗口中的“Choose interfaces:”文本框中输入“Moveable”,单击OK按钮返回,单击Finish按钮完成类的创建。这样就创建了一个名称为Cordlessphone的类。输入如下代码:

package phone;

public class Cordlessphone extends Fixedphone implements Moveable{

public Cordlessphone() { }

public Cordlessphone(String phoneCode) { }

super(phoneCode);

super();

9

/*

* 重写父类Fixedphone 中的方法 */ @Override

}

public void call(){ // 打电话 }

@Override

public String phoneType() { } /*

* 实现Moveable 接口中的方法 */ @Override

public void way() { }

System.out.println(\这是可移动的Cordlessphone\); return(\这是无绳电话\);

System.out.println(\用无绳电话打电话,电话号码:\+getPhoneCode());

(6)在Package Explorer窗口中工程Experiment2下的“src”下的“phone”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Name文本框中输入“TestPhone”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为TestPhone的主类。输入如下代码:

package phone;

public class TestPhone { }

public static void main(String[] args) { }

Phone[] phones = new Phone[3];

phones[0] = new Mobilephone(\); phones[1] = new Fixedphone(\); phones[2] = new Cordlessphone(\); for (int i = 0; i < phones.length; i++) { }

System.out.println(\); Moveable[] moveables = new Moveable[2];

moveables[0] = new Mobilephone(\); moveables[1] = new Cordlessphone(\); for (int i = 0; i < moveables.length; i++) { }

moveables[i].way();

System.out.println(phones[i].phoneType()); phones[i].call();

10

(7)点击工具栏运行按钮,运行结果如图E2-2所示。

图E2-2 运行结果

(二)实验练习题

1、定义一个图书类,其属性有书名、编号(利用静态属性实现自动编号)、书价和静态属性图书总册数,在构造方法中利用此静态属性为对象的编号赋值。类中有无参和带2个参数(书名、书价)的构造方法、获取和设置属性的方法及显示属性的方法。并编写程序进行测试。

2、模拟一个军队作战场景,军队里面有各种兵种,如骑兵、步兵、炮兵等等,每种兵的攻击敌人方式不一样,请建立3种不同的兵种,每种3个对象,然后建立一个军官对象,军官也会上场去攻击敌人,但是军官还有一种行为,就是发号,军官发号了,所有的兵,无论什么兵种都去战场攻击敌人。程序运行效果就是一个军官开始发号,然后所有的士兵包括军官都去打仗,显示每个人攻击敌人的方式。

11

实验3 Java常用类库

一、实验目的

1、掌握Random类、时间日期操作类的使用; 2、掌握使用Timer类和TimerTask类。

二、实验环境

MyEclipse/Eclipse

三、实验内容

(一)基本指导

1、题目:倒计时程序,从10秒倒计时到1秒,然后程序结束。 操作步骤:

(1)启动MyEclipse,新建一个Java工程:选择菜单File->New->Java Project,就会弹出创建Java 项目的界面。在创建Java 项目的界面中,Project name的文本框用来输入新创建Java 项目的项目名称,这里我们输入“Experiment3”。单击Finish按钮完成工程的创建。

(2)在Package Explorer窗口中单击工程Experiment3前面的“+”号,在“src”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Package文本框中输入“countDown ”,在Name文本框中输入“MyTimerTask”,单击Superclass后的“Browse...”按钮,在弹出的窗口中的“Choose a type:”文本框中输入“TimerTask”,单击OK按钮返回,单击Finish按钮完成类的创建。这样就创建了一个名称为MyTimerTask的类。

(3)在MyTimerTask类中输入代码如下:

import java.util.Timer; import java.util.TimerTask;

public class MyTimerTask extends TimerTask { }

Timer myTimer; int time=10;

public MyTimerTask(Timer myTimer) { }

@Override

public void run() { }

System.out.println(\倒计时:\+time--); if(time==0){ }

myTimer.cancel();//结束定时任务 this.myTimer = myTimer;

(4)在Package Explorer窗口中工程Experiment3的“src”下的“countDown”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Name文本

12

框中输入“CountDownDemo”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为CountDownDemo的主类。

(5)在CountDownDemo类的main方法中输入代码如下:

import java.util.Timer; public class CountDownDemo { }

public static void main(String args[]) { }

Timer myTimer = new Timer();

MyTimerTask myTask = new MyTimerTask(myTimer); //下面设置任务一秒后开始执行,每1秒钟运行一次 myTimer.schedule(myTask, 1000, 1000);

(6)点击工具栏运行按钮,运行结果如图E3-1所示。

图E3-1 运行结果

2、题目:关于日期的各种计算。 操作步骤:

(1)在Package Explorer窗口中的工程Experiment3的“src”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Package文本框中输入“dateTest”,在Name文本框中输入“DateUtil”,单击Finish按钮完成类的创建。这样就创建了一个名称为DateUtil的类。

(2)在DateUtil类中输入代码如下:

package DateTest;

import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtil {

// 获取当前时间

public String getNowTime() { }

public String getNowTime2() {

SimpleDateFormat sDateFormat = new SimpleDateFormat(

\);

Date now = new Date(System.currentTimeMillis());

13

SimpleDateFormat sDateFormat = new SimpleDateFormat(\); Date now = new Date();

return sDateFormat.format(now);

(5)点击工具栏运行按钮,运行结果如图E3-2所示。

图E3-2 运行结果

(二)实验练习题

1、编写应用程序,程序运行后随机生成100组36选7的数组(使用Random类),并统计1~36中的各个数字出现的次数。

2、编写程序,用户从输入对话框(JOptionPane.showInputDialog( )方法)输入了两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。

3、使用Timer类和TimerTask类每秒输出一次系统时间,每5秒输出一个提示信息,输出10次提示信息后程序结束。

19

实验4 集合与泛型

一、实验目的

掌握集合类与泛型的使用。

二、实验环境

MyEclipse/Eclipse

三、实验内容

(一)基本指导

1、题目:输入一行字符,分别统计出字符串中有多少种字符以及每种字符的个数。 操作步骤:

(1)启动MyEclipse,新建一个Java工程:选择菜单File->New->Java Project,就会弹出创建Java 项目的界面。在创建Java 项目的界面中,在Project name的文本框中输入“Experiment4”。单击Finish按钮完成工程的创建。

(2)在Package Explorer窗口中单击工程Experiment4前面的“+”号,在“src”上单击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Package文本框中输入“statisticAndCount”,在Name文本框中输入“StatisticAndCount”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为StatisticAndCount的主类。

(3)在StatisticAndCount类的main方法中输入代码如下:

package statisticAndCount; import java.util.HashMap; import java.util.Map; import java.util.Scanner;

public class StatisticAndCount {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in); System.out.println(\请输入一行字符: \); String s = sc.nextLine();

int count = 0; Character ch=null;

//charMap是存储字符及其个数的集合对象

Map charMap = new HashMap(); for (int i = 0; i < s.length(); i++) { ch=s.charAt(i); // 第一次出现的字符

if (charMap.get(ch) == null) { count = 0; } else {

count = (Integer)charMap.get(ch); }

20

}

charMap.put(ch, count + 1); }

System.out.println(charMap); }

(4)点击工具栏运行按钮,运行结果如图E4-1所示。

图E4-1 运行结果

2、题目:使用Properties类记录程序窗口上次关闭时的大小和位置,下次显示窗口时按照上次关闭时的大小和位置显示。

操作步骤:

(1)在Package Explorer窗口中工程Experiment4的“src”上单击鼠标右键,在弹出菜单中选择New->Class命令,就会出现创建Java 类界面,在Package文本框中输入“windowTest”,在Name文本框中输入“MyFrame”,单击Finish按钮完成类的创建。这样就创建了一个名称为MyFrame的类。

(2)在MyFrame类中输入代码如下:

import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import javax.swing.JFrame;

class MyFrame extends JFrame {//JFrame类是系统窗口类

public MyFrame() {

setSize(Integer.parseInt(property.getProperty(\)),

Integer.parseInt(property.getProperty(\)));

21

//根据Properties对象的\和\设置窗口位置 addWindowListener(new MyWindowAdapter());//设置窗口事件处理 try {

Properties property = new Properties(); //加载属性文件内容到Properties对象

property.load(new FileInputStream(\)); //根据Properties对象的\和\设置窗口大小

}

setLocation(Integer.parseInt(property.getProperty(\)), }

Integer.parseInt(property.getProperty(\)));

} catch (FileNotFoundException e) { }

// 发生异常说明程序第一次运行,mysave.properties文件还未创建 setSize(600, 200);//设置初始窗口大小,宽600像素,高200像素 System.out.println(\ + e);

} catch (IOException e) {

private class MyWindowAdapter extends WindowAdapter {//事件处理内部类 }

public void windowClosing(WindowEvent wevent) {//窗口关闭事件处理 }

try { }

Properties property = new Properties();

//JFrame类的getHeight()方法、getWidth()方法返回窗口高度和宽度 //JFrame类的getX()方法和getY()方法返回窗口左上角的X和Y坐标 property.setProperty(\,

String.valueOf(getHeight()));

property.setProperty(\, property.setProperty(\,

String.valueOf(getX()));

property.setProperty(\, String.valueOf(getY())); property.store(new FileOutputStream(\),

\);

String.valueOf(getWidth()));

System.exit(0);//结束程序

System.out.println(\ + e);

} catch (Exception e) {

(3)在Package Explorer窗口中工程Experiment4的“src”下的“windowTest”上单

击鼠标右键,在弹出菜单中选择New->Class,就会出现创建Java 类界面,在Name文本框中输入“PropertiesTest”,选中“public static void main(String[] args)”复选框,单击Finish按钮完成类的创建。这样就创建了一个名称为PropertiesTest的主类。

(4)在PropertiesTest类的main方法中输入代码如下:

public class PropertiesTest {

public static void main(String[] args) { }

MyFrame frame = new MyFrame(); // 创建程序窗口

frame.setTitle(\会记住上次关闭时的大小和位置的窗口\);//设置窗口标题 frame.setVisible(true);// 显示窗口

22

}

(5)点击工具栏运行按钮,运行时会弹出一个窗口,如图E4-2所示。改变窗口的大小和位置,点击窗口关闭按钮关闭程序后,再启动程序,会发现程序窗口按照上次关闭时的大小和位置显示。

图E4-2 运行窗口

(二)实验练习题

1、定义一个学生类Student,该类定义了3个属性:学号number(String类型)、姓名name(String类型)和成绩mark(int型),类中定义一个构造方法,用来初始化类中的3个属性。为了方便显示,该类覆盖了父类Object的toString()方法,返回以下格式的字符串:\学号:\+number+\ 姓名:\+name+\ 成绩:\+mark。在main方法中创建ArrayList对象list,并添加5个Student类对象,并将list的所有元素分行显示;然后用自定义的比较器将list的元素按学号升序排序后输出。

2、编写程序,自定义一个泛型类,类型参数是数字类(Number)的子类,类中提供添加数据、返回最大值、返回最小值、返回平均值、递增排序、递减排序方法,并编写测试类进行测试。

23

本文来源:https://www.bwwdw.com/article/ifvf.html

Top