(1)编写一个学生类,包括学号、姓名、年龄属性和一个构造方法,toString方法。(2)主方法种键盘输入信息创建n个学生对象,将学生对象存放在集合中,按照年龄的高低排序输出.
要求:(1) 如果年龄不是整数,则抛出输入错误异常; (2)如果年龄小于3,抛出年龄低异常;如果年龄大于35,则抛出年龄高异常;(3)如果姓名或学号为空,则抛出空异常。编写测试程序。编写自定义异常类,包括空异常类、年龄低异常类和年龄高异常类。
package StudentException;
import java.util.*;
class Student implements Comparable<Student>{//定义学生类
String id;
String name;
int age;
public Student(String name,String id,int age) {
this.id=id;
this.name=name;
this.age=age;
}
public String toString() {
return"姓名:"+name+" 学号:"+id+" 年龄:"+age+"\n";
}
public int compareTo(Student o) {//必须要重写compareTo方法
return this.age-o.age;//按年龄升序
}
}
class StudentLowAge extends Exception{//低龄异常类
int age;
public StudentLowAge(int age) {
this.age=age;
}
public String toString() {
return"该学生的年龄是:"+this.age+",小于3,年龄太低";
}
}
class StudentOverAge extends Exception{高龄异常类
int age;
public StudentOverAge(int age) {
this.age=age;
}
public String toString() {
return"该学生的年龄是:"+this.age+",大于35,年龄太高";
}
}
class NullException extends Exception{//空异常类
String s;
public NullException(String s){
this.s=s;
}
public String getS() {
return s;
}
public String toString() {
return"该学生的数据不能为空";
}
}
public class StudentTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
String data[];
List<Student>students=new ArrayList<Student>();
System.out.println("请输入需要创建对象的学生个数:");
int n=scanner.nextInt();
int i;
for(i=0;i<n;i++) {
System.out.println("请输入第"+(i+1)+"个学生的数据(姓名、学号、年龄):");
while(true) {
try {
data=scanner.nextLine().split(" ");//字符串分割
String name=data[0];
String id=data[1];
int age=Integer.parseInt(data[2]);
抛出异常
if(id==null||id.equals(""))
throw new NullException(id);
if(name==null||name.equals(""))
throw new NullException(name);
if(age<3)
throw new StudentLowAge(age);
if(age>35)
throw new StudentOverAge(age);
Student student=new Student(name,id,age);
students.add(student);
break;
}捕获异常
catch(StudentLowAge e) {
System.err.println(e.toString());
System.out.println("请重新输入第"+(i+1)+"个学生的数据(姓名、学号、年龄):");
}catch(StudentOverAge e) {
System.err.println(e.toString());
System.out.println("请重新输入第"+(i+1)+"个学生的数据(姓名、学号、年龄):");
}catch(NullException e) {
System.err.println(e.toString());
System.out.println("请重新输入第"+(i+1)+"个学生的数据(姓名、学号、年龄):");
}catch(NumberFormatException e) {
System.err.println("请输入正确的数据类型");
System.out.println("请重新输入第"+(i+1)+"个学生的数据(姓名、学号、年龄):");
}catch(ArrayIndexOutOfBoundsException e) {
}
}
}
Collections.sort(students);//对年龄进行排序
System.out.println(students.toString());
}
}