尚学堂·Java300集·第六章·作业题参考答案(eclipse运行结果截图+源码)

本文深入解析Java中的异常处理机制,包括Error与Exception的区别,Checked与Runtime异常的特点,以及try-catch-finally和throws机制的应用。并通过自定义异常类,演示了如何处理非法分数、非法参数及学生分数平均分计算中的异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

eclipse运行结果截图:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
源码:

package cn.sxt.exception;//所在包名

/**
 * 尚学堂第六章练习题解答
 * @author 绝尘
 *
 *一、选择题
 *	C  C  AC  BC  B
 *
 *二、简答题
 *  1.Error:大多数Error与代码编写者执行的操作无关,而是JVM运行代码时出现的问题,表明
 *    JVM处于不可修复的崩溃状态,这类错误程序员不需要管。
 *    Exception:异常Exception是程序员能够处理的,一般通过try-catch-finally或
 *    throws机制进行处理。
 *  2.Checked异常:在代码编译阶段就会被发现,所以必须进行处理,否则无法通过编译,处理这类异常
 *    的方式有两种:try-catch-finally机制或throws机制。
 *    Runtime异常:需要在代码运行时才能发现,这类异常是由编程错误导致,对于这类异常,不用采用
 *    处理机制来处理,只需要增加适当的逻辑处理代码即可。
 *  3.try:try包含可能出现异常的语句块。
 *    catch:catch包含异常捕获、异常处理语句。
 *    finally:包含try-catch-finally异常处理机制中最后都会执行的语句块。
 *    throws:throws申明异常,在方法名后。
 *    throw:throw抛出异常,在方法体内。
 *  4.throws:throws申明异常,在方法名后。
 *    throw:throw抛出异常,在方法体内。
 *
 *三、编码题
 */
 import java.util.Scanner;
/*
 *  1.编写程序接收用户输入分数信息,如果分数在0—100之间,输出成绩。
 *    如果成绩不在该范围内,抛出异常信息,提示分数必须在0—100之间。
 *    要求:使用自定义异常实现。
 */
class IllegalScoreException extends Exception{//自定义非法成绩异常类
	//默认构造器
    public IllegalScoreException() {
    	
    }
    //带有详细信息的构造器,信息存储在message中
    public IllegalScoreException(String message) {
        super(message);
    }
}
/*
 *  2.写一个方法void isTriangle(int a,int b,int c),判断三个参数是否能构成
 *    一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息
 *     “a,b,c不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命
 *     令行输入的三个整数, 调用此方法,并捕获异常。
 */
class IllegalArgumentException extends Exception{//自定义非法参数异常类
	//默认构造器
    public IllegalArgumentException() {
    	
    }
    //带有详细信息的构造器,信息存储在message中
    public IllegalArgumentException(String message) {
        super(message);
    }
}
/*
 *  3.编写一个计算N个学生分数平均分的程序。程序应该提示用户输入N的值,如何必须
 *    输入所有N个学生分数。如果用户输入的分数是一个负数,则应该抛出一个异常并捕获,
 *    提示“分数必须是正数或者0”。并提示用户再次输入该分数。
 *  
 */
class IllegalStudentNumException extends Exception{//自定义非法参数异常类
	//默认构造器
    public IllegalStudentNumException() {
    	
    }
    //带有详细信息的构造器,信息存储在message中
    public IllegalStudentNumException(String message) {
        super(message);
    }
}

public class SxtExercise05 {
			
	public static void main(String[] args) throws Exception, IllegalScoreException{
		
		//第1题.自定义异常类IllegalScoreException的异常处理机制
		System.out.print("请输入成绩:");
		Scanner inputScore = new Scanner(System.in);
		int score=inputScore.nextInt();
		if(score<0||score>100)
			{throw new IllegalScoreException("分数必须在0-100之间!");}
		else {System.out.println("输入成绩为:"+score);}
		
		System.out.println("###########################");
		
		//第2题.void isTriangle(int a,int b,int c),判断三个参数是否能构成一个三角形
		System.out.print("请输入边长:");
		Scanner inputEdge1 = new Scanner(System.in);
		int a=inputEdge1.nextInt();
		Scanner inputEdge2 = new Scanner(System.in);
		int b=inputEdge2.nextInt();
		Scanner inputEdge3 = new Scanner(System.in);
		int c=inputEdge3.nextInt();
		isTriangle(a,b,c);
		
		System.out.println("###########################");
		
		//第3题.计算N个学生分数平均分,输入的分数是一个负数,则应该抛出一个异常并捕获
		System.out.print("请输入学生个数:");
		Scanner inputStudentNum = new Scanner(System.in);
		int N=inputStudentNum.nextInt();
		if(N<=0)
			{throw new IllegalStudentNumException("学生个数必须为正!");}
		
		int scoreSum=0;
		for (int i=1;i<=N;i++) {
			//System.out.print("请输入第"+i+"学生分数:");
			//Scanner inputStudentScore = new Scanner(System.in);
			//nowScore=inputStudentScore.nextInt();
			try {
				scoreSum=upDateSumScore(scoreSum,i);
			} catch (IllegalScoreException e) {
				System.out.println("【提示】:分数必须是正数或者0!请再次输入第"+i+"个学生分数...");
				i--;//若第n次更新异常则重新更新该次
			}
		}
		System.out.println(N+"个学生的平均分是:"+scoreSum/N);
	}//main方法
	
	//更新总分的方法(根据输入学生个数N,循环更新N次,若第n次更新异常则重新更新该次)
	private static int upDateSumScore(int scoreSum,int i) throws IllegalScoreException {
		System.out.print("请输入第"+i+"个学生分数:");
		Scanner inputStudentScore = new Scanner(System.in);
		int nowScore = inputStudentScore.nextInt();
		if(nowScore<0)
			{throw new IllegalScoreException();}
		return scoreSum+nowScore;
	}
	
	//判断三边是否构成三角形的静态方法
	static void isTriangle(int a,int b,int c) throws IllegalArgumentException
	{
		if (((a + b) <=c) || ((a + c) <=b) || ((b + c) <=a))
			{throw new IllegalArgumentException("a,b,c不能构成三角形!");}
		else {System.out.println("三角形三边长分别为:"+a+" "+b+" "+c);}
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值