.编写一个学生类,包括学号、姓名、年龄属性和一个构造方法,toString 方法。2) 主方法种键盘输入信息创建口个学生对象,将学生对象存放在集合中,按照年龄的高低排序输出. 要求:1) 如果年龄不是整数,则抛出输入错误异常;2)如果年龄小于了,拋出年龄低异常:如果年龄大于 35,则拋出年龄高异常;3) 如果姓名或学号为空,则抛出空异常。编写测试程序。编写自定义异常类,包括空异常类、年龄低异常类和年龄高 异常类。
时间: 2024-02-12 20:09:41 浏览: 69
好的,根据您的要求,我来给您编写一个Java程序实现。
首先,我们需要定义一个Student类,包括学号、姓名、年龄属性和一个构造方法,toString方法。在构造方法中,我们需要检查学生的年龄是否合法(必须是整数,且在18到35岁之间),以及姓名和学号是否为空。如果不合法,则抛出自定义异常。代码如下:
```java
public class Student implements Comparable<Student> {
private String id;
private String name;
private int age;
public Student(String id, String name, String age) throws AgeException, EmptyValueException {
if (id == null || id.isEmpty() || name == null || name.isEmpty()) {
throw new EmptyValueException("姓名或学号不能为空!");
}
try {
this.age = Integer.parseInt(age);
} catch (NumberFormatException e) {
throw new AgeException("年龄必须是整数!");
}
if (this.age < 18) {
throw new AgeException("年龄太低!");
} else if (this.age > 35) {
throw new AgeException("年龄太高!");
}
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "学号:" + id + ",姓名:" + name + ",年龄:" + age;
}
@Override
public int compareTo(Student o) {
return this.age - o.getAge();
}
}
```
接下来,我们需要编写自定义异常类。根据要求,我们需要实现三个异常类:空异常类、年龄低异常类和年龄高异常类。代码如下:
```java
public class EmptyValueException extends Exception {
public EmptyValueException(String message) {
super(message);
}
}
public class AgeException extends Exception {
public AgeException(String message) {
super(message);
}
}
public class LowAgeException extends AgeException {
public LowAgeException(String message) {
super(message);
}
}
public class HighAgeException extends AgeException {
public HighAgeException(String message) {
super(message);
}
}
```
最后,我们需要编写测试程序。在程序中,我们要求用户从键盘输入学生的信息,然后创建学生对象并存放在一个集合中。最后,按照学生的年龄从小到大排序,并输出。代码如下:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入学号:");
String id = scanner.nextLine().trim();
System.out.print("请输入姓名:");
String name = scanner.nextLine().trim();
System.out.print("请输入年龄:");
String age = scanner.nextLine().trim();
try {
Student student = new Student(id, name, age);
students.add(student);
System.out.println("添加成功!");
} catch (EmptyValueException | AgeException e) {
System.out.println(e.getMessage());
}
System.out.print("是否继续添加?(y/n)");
String choice = scanner.nextLine().trim();
if (!choice.equalsIgnoreCase("y")) {
break;
}
}
Collections.sort(students);
System.out.println("按年龄从小到大排序:");
for (Student student : students) {
System.out.println(student);
}
}
}
```
这样,我们就完成了这个Java程序的编写。当用户输入不合法的信息时,程序会抛出自定义的异常,提示用户重新输入。当所有学生信息都输入完成后,程序会按照年龄从小到大排序,并输出结果。
阅读全文