题目的主要信息:

  • 对于考试成绩在0-100之间的直接输出
  • 不满足就产生一个自定义异常,控制台输出一个错误信息"分数不合法"

具体做法:

我们查看自定义异常,需要一个构造函数,根据抛入的错误信息是字符串,我们直接用字符串构造这个异常,同时用super调用父类的函数构造。

在if判断成绩之前加入try-catch的异常处理语句,判断分数是否在0-100,如果在直接输出分数,否则抛出一个错误信息为"分数不合法"(字符串)的异常,处理异常部分即catch部分,直接用异常父类的getMessage方法获取异常信息,输出即可。

alt

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        try{
            if(score >= 0 && score <= 100) //正常分数输出
                System.out.println(score);
            else
                throw new ScoreException("分数不合法"); //抛出异常
        }
        catch(ScoreException str){
            System.out.println(str.getMessage()); //输出异常
        }
    }
}

class ScoreException extends Exception{ //继承自异常类的分数异常处理类
    public ScoreException(String message){ //构造函数
        super(message); //输入异常信息
    }
}

复杂度分析:

  • 时间复杂度:O(1)O(1),异常处理,直接输出,常数时间
  • 空间复杂度:O(1)O(1),无额外空间