对象;如是2,生成Rectangle对象;如是3,生成Star对象)。然后将Vector中元素依次取出,判断其是否为Star类。如是返回其是个Star。否则返回其面积。
3..学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。
1)设计两个信息管理接口StudentManageInterface和TeacherManageInterface。其中,StudentInterface接口包括setFee()方法和getFee()方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay()方法和getPay()方法,分别用于设置和获取教师的工资
2) 定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它定义的成员变量有name(姓名)、sex(性别)、age(年龄)、fee(每学期学费)、pay(月工资)。
3) 创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“provide a loan”(需要贷款)信息。 提示:
1)定义两个接口,分别在其中申明两个方法。 2)定义主类Graduate,实现这两个接口。 3)定义主类的成员变量,和构造方法。 4)给出四个接口方法的实现。
5)给出一个计算是否需要贷款的方法,在里面统计年收入和学费,并输出是否需要贷款的信息。
6)写main方法。在其中创建一个姓名为“zhangsan”的研究生,调用计算是否需要贷款的方法。 4.书后练习
11
实验五 Java的异常处理
一、实验目的:
理解 java 语言中独特的异常处理机制; 掌握异常处理方法;
正确地使用捕获异常和声明抛弃异常的两种异常处理的方法; 了解自定义异常类的使用;
理解抛出异常和声明抛出异常的区别与联系; 二、实验内容:
1. 从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如
果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。
2.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
3.自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。
三、实验要求:
1. 通过实验掌握捕获异常和声明抛弃异常的两种异常处理的方法; 2. 程序必须能够捕获Integer.parseInt()产生的异常并作相应的处理; 3. 程序必须能够将处理的相应的信息输出出来;
4. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材
示,并给出解决办法。(附运行界面、源代码)。
12
四、实验步骤:
1. (第1题) 使用try?..catch?. finally语句对Integer.parseInt()产生的异常进行捕获处理;
2. (第2题) 定义方法void sanjiao(int a,int b,int c)中,不符合条件则抛出异常(if a+b<=c(或a+c<=b,b+c<=a) then throw new IllegalArgumentException(),),再定义main方法,调用此方法,用try?..catch?. finally语句并捕获异常;
3. (第3题) 定义三角形类及相应的方法, 在定义的方法中对不符合条件则抛出异常(如上题) ,再定义main方法,对正确的数据输出正确信息,否则捕获异常; 五、自做实验
1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。[提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试] public class StringIndexOutOf{
public static void main(String args[]){ System.out.println(\字符串索引越界异常\
String str=args[0]; System.out.println(“第四个字符为 ”+str.charAt(3)); int
aa=Integer.parseInt(args[0]);
System.out.println(“
平
方
为 ”+aa*aa); } }
13
实验六 Java数组、字符串及常用类应用
一、实验目的:
掌握数组的定义和使用方法;熟悉数组的排序、查找等算法。 掌握字符串的使用方法。
二、实验内容:
1.编写Application程序, 从命令行参数输入10个整数并保存在数组中,求数组中最大、最小、数据的和、平均值。
2.从命令行参数一日期,如“2005-5-6”,计算与今日之间的天数间隔。 3.将命令行第一个参数每个字符放入一字符数组,然后逆序输出
4.编写Application程序,接受用户输入一段英文文字后,输出其中的字符数、单词数和句子数(设句子以“?”、“!”、“.”结束)。 5.打印杨辉三角的前10层。
6.编写Applet程序,使用 *画一条正弦曲线(提示:y=a* sin(x),坐标要取整) 三、实验要求:
1.熟练对象数组及创建初始化和未初始化的数组的方法; 2. 熟悉从命令行参数的使用;
3. 熟悉String 和StringBUFFER的使用方法 4. 熟悉常用类库的使用;
5. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。 四、实验步骤:
1(第1题).从命令行输入10个数到数组,用循环语句分别求最大、最小、数据的和、平均值。
2. (第2题)利用String类的各种方法,分别判断字符是否为“?”、“!”、“.”,用3个计数器分别计数。
3(第3题)将命令行第一个参数字符串中的每个字符作为数组元素放入一字符数组,再循环语句逆序数组元素。
4.(第4题)定义一个二维数组,第一维的长度为所打印杨辉三角的层数(即
14
10),第二维为每一层的数据个数(也就是其所在的层数)。
5 (第5题) 利用Math类中sin函数,在Paint()方法中用Graphics类drawString()画一条正弦曲线. 五、自做实验
1.求Fibonacci序列的前n项,要求:
在main方法中定义一数组,数组的长度n为一final定义的常量,使用一单独方法,无返回值,参数为一数组,在方法中给数组赋予序列的值,在main方法中调用该方法,然后打印结果数组的内容
2.声明一个矩阵类Matrix,成员变量是一个二维数组,设数组元素类型为int,请设计方法: (1)构造方法:
Matrix() //构造一个10X10个元素的矩阵,没有数据
Matrix(int n,int m) //构造一个nXm个元素的矩阵,数据由随机数产生 Matrix(int table[][]) //以一个整型的二维数组构造一个矩阵 要求使用 this
(2) 实例方法:
public void output() //输出Matrix类中数组的元素值 public void transpose() //输出一个矩阵的转置矩阵 2.随机数求法:
Math.random( )返回0-1的小数,由上题中的Matrix类派生出正方形Square类,在构造方法中调用父类的构造方法(使用super)。
3. 编写一个Java程序,完成以下功能:
(1)声明一个名为s的String对象,并使它的内容是“My name is Carrol”; (2)打印整个字符串; (3)打印字符串的长度; (4)打印字符串的第一个字符; (5)打印最后一个字符; (6)打印字符串的第一个单词。
*4.编写一个程序,用散列表实现学生成绩单的存储和查询,并将若干个查
15