要求:完成一个 java application应用程序,完成一个计算绝对值表达式 |a-b|的功能。要求当b比a大时人为抛出一个自定义异常,在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
1.知识点与思路
此要求中的绝对值异常需要自定义,因此可以参考Java中SUN公司定义好的异常类型代码稍作修改。这里定义了两个类,一个类AbsoluteException用于继承父类Exception,进而可以后续上抛异常后直接继承父类方法。另一个类MyException中主要用于定义符合处理绝对值异常的具体方法。自定义异常完成后,即可以在程序主入口调用自定义异常类,完成绝对值计算、异常捕捉和计算结果的输出。
2.代码
import java.util.Scanner;
/*
完成一个 java application应用程序,完成一个计算绝对值表达式 |a-b|的功能。
要求当b比a大时人为抛出一个自定义异常,在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
*/
public class ExceptionWork2 {//类名
public static void main(String[] args) {//主入口
Scanner s = new Scanner(System.in);//接收键盘输入
System.out.println("请输入a的值:");
int a = s.nextInt();//读取输入a的int值
System.out.println("请输入b的值:");
int b = s.nextInt();//读取输入b的int值
MyException me = new MyException();//创建自定义异常MyException对象
//捕捉异常
try {//当a>b即异常不存在时
int c = me.Absolute(a,b);//调用自定义异常定义c
System.out.println("计算绝对值|a-b|为:"+c);
}catch (Exception e){//当a<b异常存在时
e.printStackTrace();//在控制台打印输出异常
int c = b - a;//定义c
System.out.println("计算绝对值|a-b|为:"+c);
}
}
}
//自定义异常类型AbsoluteException,继承父类Exception(Throwable类下可处理的异常Exception)
class AbsoluteException extends Exception{
public AbsoluteException(String msg){
super(msg);//继承父类构造方法
}
}
//自定义异常类型MyException用于抛出异常
class MyException{
public int Absolute(int a,int b) throws AbsoluteException {//定义Absolute方法用于处理异常,并向上AbsoluteException抛出异常
int c ;
if(a>b){//当a>b时,正常运算
c = a - b;
}else{//当a<b时,抛出异常
throw new AbsoluteException("b>a时,抛出一个异常");
}
return c;//返回c
}
}
3.运行结果
从代码运行结果可以看出,当绝对值计算中为正数时可以正常输出绝对值;当绝对值计算中为负数时,程序可以在控制台中抛出一个异常提示,同时正确输出绝对值。