定义一个学生类包含六个成员变量用来保存学生的心理年龄学号和三门功课成绩设计三个以上的构造函数设计三个以上的成员函数全队六个成员变量的操作要求年龄的范围为16~30成绩的范围0到151起煮还是对定义的类进行测试
时间: 2024-10-12 14:06:22 浏览: 8
好的,我们来定义一个名为`Student`的类,满足您的需求。首先,我们有六个性能变量,包括心理年龄、学号和三门功课的成绩。我们将定义三个构造函数以便于不同情况下的初始化,同时提供一些成员函数来操作这些变量,并加入年龄和成绩范围的限制。
```java
import java.util.ArrayList;
public class Student {
private int age; // 心理年龄 (16-30)
private int id; // 学号
private int mathScore; // 数学成绩 (0-150)
private int englishScore; // 英语成绩 (0-150)
private int scienceScore; // 科学成绩 (0-150)
private ArrayList<Integer> grades; // 存放所有科目成绩
// 构造函数 - 默认无参数
public Student() {
this.age = 0;
this.id = 0;
grades = new ArrayList<>();
}
// 构造函数 - 静态工厂方法,直接设置所有值
public static Student createStudent(int age, int id, int math, int english, int science) {
if (!isValidAge(age)) throw new IllegalArgumentException("年龄不在范围内");
if (!isValidGrade(math) || !isValidGrade(english) || !isValidGrade(science)) throw new IllegalArgumentException("成绩不在范围内");
return new Student(age, id, math, english, science);
}
// 构造函数 - 分段赋值
public Student(int age, int id, int[] scores) {
this(age, id);
for (int score : scores) {
if (!isValidGrade(score)) throw new IllegalArgumentException("成绩不在范围内");
grades.add(score);
}
}
// 成员函数 - 设置和获取年龄
public void setAge(int age) {
if (isValidAge(age)) this.age = age;
else System.out.println("年龄无效");
}
public int getAge() {
return age;
}
// 成员函数 - 设置和获取成绩
public void setMathScore(int score) {
if (isValidGrade(score)) mathScore = score;
else System.out.println("数学成绩无效");
}
public int getMathScore() {
return mathScore;
}
// 类似英语和科学分数的getter和setter方法
// 成员函数 - 检查年龄和成绩是否有效
private boolean isValidAge(int age) {
return age >= 16 && age <= 30;
}
private boolean isValidGrade(int grade) {
return grade >= 0 && grade <= 150;
}
// 测试类方法
public static void main(String[] args) {
try {
Student student = Student.createStudent(20, 12345, 90, 85, 95);
System.out.println("学生年龄:" + student.getAge());
System.out.println("数学成绩:" + student.getMathScore());
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
在这个定义中,我们创建了三个构造函数,并确保了年龄和成绩的合理性。main函数展示了如何创建和访问Student对象的属性。请注意,为了简便起见,这里并未在每个成员函数中都检查年龄和成绩,但在实际项目中应该这样做。
阅读全文