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);}
}
}