当前位置:首页 > 桂电计算机学院java实验指导书1
桂林电子科技大学计算机科学与工程学院Java实验指导书?
实验二 系统类和数组
一、实验目的
1、 通过字符串处理类的应用,掌握系统类的使用方法。 2、 掌握数组的定义和使用。
3、 进一步掌握 Java 程序设计的基本过程和基本方法。
二、实验类型设计型
三、实验内容
1、 应用数组和字符串,编写一个用于统计学生成绩的程序,运行之后,首先能接受用户输入不超过10 个学生的姓名和 Java 课的分数。输入结束之后,能输出这批学生的 Java 课 高分者和 低分者的姓名
和分数。还能接受用户输入学生姓名来查询某学生的成绩,当姓名不存在时,向用户提示不存在该学生。
2、 通过应用 Java 中常用的数组和字符串,编写一个简单的通讯录程序,来熟悉系统类和数组的应用。通讯录由多条记录构成。每条记录包括一个联系人的姓名、性别、电话、通信地址,并具有显示、查询、增加、修改、删除等功能,且每执行一次功能操作后,可以选择用类似以下的格式,输出通讯录的所有信息记录:
编号姓名性别电话通信地址
01 张三男 123456 上海 02 李四女 456789 桂林
可考虑用数组分别存储姓名,性别,电话,通信地址,那么显示、查询,增加、修改、删除操作就可转换为对数组元素的操作。通讯录中的所有记录的每一个字段可以采用一维或二维或其它类型数组来 存放。请发挥自己的思考能力,用自己熟悉的或者觉得更合理的方式来设计程序解决问题,完成该实验。
四、预备知识
面向对象是 Java 语言的重要特点,所有 Java 程序都必须是完全面向对象的,需要一个或多个类来完成某一个任务。如果每次要完成什么项目,这些类都要重头开始全都由开发者设计,其工作量很可能是很大的,这显然不现实。在前面的实验里面,我们自己定义了一些类来构成程序(我们称之为用户自定义类),也用到了一些系统提供的类(即系统类)来封装数据和实现功能(例如使用字符串 String 类定义字符串对象)。实际上系统类是Java面向对象程序设计的基础,系统类贯穿到所有Java程序的设计之中。Java开发包中提供了非常多的系统类,而且除了Sun(现已并入Oracle)公司自己推出的标准
12
桂林电子科技大学计算机科学与工程学院Java实验指导书?
开发包之外,很多其它公司或个人也开发了各种开发包用于在设计中的复用。这些包中的系统类有的是用于输入输出的,有的是用于网络程序设计的,有的是用于图形图像处理的,种类繁多,数量庞大,并被组织成很多个包来存放。对于非官方的开发包,我们需要在编译路径下导入。对于 JDK 本身提供的系统类,我们在具体需要用到它们的时候,只需要在程序的开头,用import关键字将其导入即可。常用的有
“Java.lang” 包 、 ”java.io” 包 、 ”java.util” 包 、 ”java.net” 包 、 ”java.awt” 包、”java.applet”包等。大家可以打开JDK API帮助文档观察,其中就列出了几乎所有的包和类。
1、 Java 中数组的定义与使用
(1)先定义,方法是:类型说明符数组名[];或类型说明符[] 数组名。
(2)然后再创建,方法是:数组名=new 类型说明符[数组元素的个数] 或数组名={初值表列};
也可以将上述两步合并为一步创建:类型说明符数组名[]={初值表列};或类型说明符[] 数组名 ={初值表列};
注意 Java 中的数组可以是不规则的,即不一定是几行几列并且每行元素个数都一样多的。例如语句 int[][] xx={{3,2,7},{1,5},{6}}; 所定义出来的数组结构如下图:
/*
* 例子2.1,关于一维数组的定义和初始化。 */publicclass ArrayTest1 { publicstaticvoid main(String args[]) {
int AB[]; // 第一步:定义数组AB
AB = newint[3]; // 第二步:对数组AB进行实例化 AB[0] = 1; AB[1] = 2; AB[2] = 3; // 赋值
System.out.println(AB[0]); // 测试结果 System.out.println(AB[1]); System.out.println(AB[2]);
int AC[] = newint[2]; // 定义数组AC同时进行实例化 AC[0] = 100; AC[1] = 200;
System.out.println(AC[0]); System.out.println(AC[1]);
int AD[] = { 10, 20, 30, 40 }; // 定义数组AD同时给定元素值 System.out.println(AD[0]);
System.out.println(AD[1]); System.out.println(AD[2]);
13
桂林电子科技大学计算机科学与工程学院Java实验指导书?
System.out.println(AD[3]);
System.out.println(AB.length); // 输出每个数组中的元素个数 System.out.println(AC.length); System.out.println(AD.length);
} }
/*例子2.2。下面所特别设计的一个例子程序向大家展示定义和初始化二维数组的几种情况,以及这 * 个过程中容易犯的错误,请仔细运行体会一下,避免在完成本次实验题目的过程中犯同样的错误。 * 另外,下面这个例子程序的运行结果为: * 数组num第1维的维数为2
* 数组num第1行的元素个数3 * 数组str第一维的维数为2 * 数组str第1行的元素个数5 * 数组str第2行的元素个数4 */
publicclass ArrayTest { publicstaticvoid main(String[] args) {
char ch[][] = newchar[3][4]; // 第一种情况:在定义的同时初始化多维数组
int num[][]; // 第二种情况
// num=new int[][]; //错!在初始化时必须至少确定数组num第一维的维数 num = newint[2][];
// num[0][0]=8; //此时这么写编译器不会报错,但运行时会提示有空指针异常
//(NullPointerException)
// num[1][4]=8; //此时同上
num[0] = newint[3];
System.out.println(\数组num第1维的维数为\ + num.length); System.out.println(\数组num第1行的元素个数\ + num[0].length); // System.out.println(\数组num第2维的元素个数\
// 此时这么写编译器不会报错,但运行时会提示有空指针异常(NullPointerException)产生,
// 因为num[1]的元素个数还没确定
String str[][] = newString[2][]; // 第三种情况:在定义的同时设定第一维为2 str[0] = new String[5]; // 第一行有5个元素 str[1] = new String[4]; // 第二行有4个元素
System.out.println('\\n' + \数组str第一维的维数为\ + str.length); System.out.println(\数组str第1行的元素个数\ + str[0].length); System.out.println(\数组str第2行的元素个数\ + str[1].length); }
}
14
桂林电子科技大学计算机科学与工程学院Java实验指导书?
/*
* 例子2.3,本例演示对象数组的定义和初始化问题。
* 基本数据类型(包括byte、short、int、long、float、double、char、boolean)的数组元素会 * 自动初始化成“空”值(对于数值,空值就是零;对于char,它是null;而对于boolean,是false)。 * 在Java中对非基本数据类型初始化时,必须使用new。在使用new创建非基本数据类型的(对象)数组 * 后,此时数组还只是一个引用数组。必须再创建数组的每一个对象,并把对象赋值给数组引用。但String * 类型的数组也是特例。具体请看下例演示。 */
class MultiDimensionArray // 一个自定义的类,用于定义一维和多维数组来用。 {
inta; // 定义成员变量aintb; // 定义成员变量bpublic
MultiDimensionArray() // 无参构造函数 {
this.a = 0; this.b = 0; }
public MultiDimensionArray(int i, int j) // 有参构造函数 {
this.a = i; this.b = j; }
publicvoid resetValue() // 用于将成员变量值复位为0的成员函数 {
this.a = 0; this.b = 0; }
} publicclass ArrayDefinitionTest
{ publicstaticvoid main(String[] args) {
String str1[] = newString[2];//String类型的一维数组 str1[1] = \; // 允许,无语法错误
String str2[][] = new String[2][3]; //String类型的二维数组 str2[1][2] = \元素str[1][2]可以直接赋值呢,发现了吗\; //仍然可以
MultiDimensionArray x = new MultiDimensionArray(2, 3); // 定义一个普通的对象 x.a = 88; // 允许 x.b = 99; // 允许
MultiDimensionArray objArray[] = new MultiDimensionArray[2]; // 定义一个对象数组! // objArray[0].a=888; //有错!运行时会导致NullPointerException,因为 //objArray[0]还未通过new生成!// objArray[0].resetValue(); //与上一行有同样的问题!
for (int i = 0; i < objArray.length; i++)
15
共分享92篇相关文档