作业记录- 带异常处理的学生类

文章讲述了如何在Java中定义一个带有自动编号、静态变量和异常处理功能的学生类Student,包括构造方法、getter/setter以及处理InputMismatchException异常以确保正确输入学生信息。同时,通过Main类演示了如何创建多个学生对象、计算平均分数。
摘要由CSDN通过智能技术生成

题目

【问题描述】

还记得不久前的学生类二的题目吗?

定义一个学生类Student,其中至少包括5个成员变量:学号no,姓名name,年龄age,性别isMale,成绩score。学生的学号从1开始编,每创建一个学生,学号自动加1(参见课件中静态变量部分的第二个例子)。一个带4个参数的构造方法用来创建学生对象,一个实例方法show()用来将学生的学号、姓名、年龄、性别和成绩独立地显示在一个行中(每个信息之间用英文状态的逗号隔开,输完成绩后要求换行,输出样例:6,Liming,15,female,100 )。

再定义一个演示类Main,在其中输入10个学生的信息,并将创建的学生对象保存到数组Student[ ] stu中。然后遍历数组,让其中的每个元素调用show方法输出自己的信息;并计算出所有学生的平均分数显示出来。

*************************************************

现在要在上述程序的基础上加上异常处理的功能:main方法中输入学生信息时,如果输入错误(比如输入”fangyuanyuan  false  15   98“,性别和年龄颠倒了 ),会发生java.util.InputMismatchException异常,要求你的程序能捕获这种异常,而对这种异常进行处理时能输出提示信息"Error input,please input again!",处理后能让用户重新输入发生异常的学生以及后续学生的信息。捕捉异常时可使用java.util.InputMismatchException类,或者直接使用Exception类。

【输入形式】样例输入的内容请一行一行分开输入,不要将所有行一次性粘贴过去,这样运行结果会看得更清楚点。

【输出形式】
【样例输入】

fangyuanyuan  15  false   98   
lisi    14  true    84    
wangwu    true    90 
wangwu    15  true    90   
sunxiaomei  15  false   86   
qianwenqing  21.2  false   76 
qianwenqing  16  false   76   
lisiyi  15  false   100   
gumeiyan  14  true    86.5    
xuzhian  15  true    60   
liangsicheng  15  true    99    
anbaoxin  14  true    80

【样例输出】

Error input,please input again!
Error input,please input again!
1,fangyuanyuan,15,female,98.0
2,lisi,14,male,84.0
3,wangwu,15,male,90.0
4,sunxiaomei,15,female,86.0
5,qianwenqing,16,female,76.0
6,lisiyi,15,female,100.0
7,gumeiyan,14,male,86.5
8,xuzhian,15,male,60.0
9,liangsicheng,15,male,99.0
10,anbaoxin,14,male,80.0
Average score:85

Codding

定义一个学生类Student,其中至少包括5个成员变量:学号no,姓名name,年龄age,性别isMale,成绩score。 顺带生成getter和setter。

学生的学号从1开始编,每创建一个学生,学号自动加1(参见课件中静态变量部分的第二个例子)需要一个静态变量index存储现在是第几个学生。

class Student{
    private int no;
    private String name;
    private int age;
    private boolean isMale;
    private int score;
    private static double index;
    
}

生成构造函数,根据题目把姓名 年龄,性别,成绩注册进来,重写tostring方法

  @Override
    public String toString() {
        return no+","+name+","+age+","+(isMale?"male":"female")+","+score;
    }

编写主体函数

循环输入10个学生信息,题目还处理异常情况,当输入错误会报错,需要我们去捕获。

Scanner sc = new Scanner(System.in);
        Student [] students = new Student[10];
        for (int i = 0;i<students.length;i++){
            try {
                String name = sc.next();
                int age = sc.nextInt();
                boolean isMale = sc.nextBoolean();
                double score = sc.nextDouble();
                Student student = new Student(name, age,isMale,score);
                students[i]=student;
            }catch (InputMismatchException e){
                i--;
                System.out.println("Error input,please input again!");
                sc.nextLine();
            }

        }
        int sum=0;
        for (Student i :students){
            sum+=i.getScore();
            System.out.println(i);
        }
        System.out.println("Average score:"+sum/10);

完整code

//package work007;

import java.util.InputMismatchException;
import java.util.Scanner;

public class StudentTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Student [] students = new Student[10];
        for (int i = 0;i<students.length;i++){
            try {
                String name = sc.next();
                int age = sc.nextInt();
                boolean isMale = sc.nextBoolean();
                double score = sc.nextDouble();
                Student student = new Student(name, age,isMale,score);
                students[i]=student;
            }catch (InputMismatchException e){
                i--;
                System.out.println("Error input,please input again!");
                sc.nextLine();
            }

        }
        int sum=0;
        for (Student i :students){
            sum+=i.getScore();
            System.out.println(i);
        }
        System.out.println("Average score:"+sum/10);
    }
}
class Student{
    private int no;
    private String name;
    private int age;
    private boolean isMale;
    private double score;
    private static int index=1;

    public Student(String name, int age, boolean isMale, double score) {
        this.name = name;
        this.age = age;
        this.isMale = isMale;
        this.score = score;
        this.no= index++;
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isMale() {
        return isMale;
    }

    public void setMale(boolean male) {
        isMale = male;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public static int getIndex() {
        return index;
    }

    public static void setIndex(int index) {
        Student.index = index;
    }

    @Override
    public String toString() {
        return no+","+name+","+age+","+(isMale?"male":"female")+","+score;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值