定义学生类 Student 属性: - 学号(字符串类型) - 成绩(整型数组类型),用于存储学生各项成绩 构造方法: - 用第一个参数给学号赋值 - 第二个参数表示成绩数组元素个数,对成绩数组进行分配存储空间,并调用随机方法生成每门课的成绩 普通方法:学号的 getter 访问器 (2)定义 Manager 类 属性: - Student类对象 构造方法: - 对Student类对象进行实例化,学号和成绩门数自行确定 其它方法: - 方法 1:输出学生学号,并声明 NullPointerException 异常。在方法中判断学生对象是否为 null,如果是则抛出 NullPointerException ,否则输出学生对象的学号。 - 方法 2:返回学生的平均成绩,并声明 NullPointerException 和 ArrayIndexOutOfBoundsException 异常。在方法中判断学生成绩数组是否为 null,如果是则抛出 NullPointerException ,否则返回成绩数组的平均值。 (3)定义 Demo 类,创建 Manage 类对象,并调用对象的方法输出学号和获取学生成绩平均并输出。要求使用 try-catch 对方法的异常进行捕捉,如果发生异常则输出异常信息。用java语言编写
时间: 2023-11-22 17:52:01 浏览: 63
下面是代码实现:
```
import java.util.Random;
public class Student {
private String number; // 学号
private int[] scores; // 成绩数组
public Student(String number, int num) {
this.number = number;
this.scores = new int[num];
Random random = new Random();
for (int i = 0; i < num; i++) {
this.scores[i] = random.nextInt(101);
}
}
public String getNumber() {
return this.number;
}
public int[] getScores() {
return this.scores;
}
}
public class Manager {
private Student student;
public Manager() {
this.student = new Student("20210001", 5);
}
public void printNumber() {
try {
if (this.student == null) {
throw new NullPointerException();
}
System.out.println("学号:" + this.student.getNumber());
} catch (NullPointerException e) {
System.out.println("发生空指针异常:" + e.getMessage());
}
}
public double getAverageScore() {
try {
if (this.student.getScores() == null) {
throw new NullPointerException();
}
int[] scores = this.student.getScores();
int sum = 0;
for (int score : scores) {
sum += score;
}
return (double) sum / scores.length;
} catch (NullPointerException e) {
System.out.println("发生空指针异常:" + e.getMessage());
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("发生数组越界异常:" + e.getMessage());
}
return 0.0;
}
}
public class Demo {
public static void main(String[] args) {
Manager manager = new Manager();
manager.printNumber();
double avgScore = manager.getAverageScore();
System.out.println("平均成绩:" + avgScore);
}
}
```
阅读全文