完成一个计算绝对值表达式 |a-b|的功能。要求当b比a大时人为抛出一个自定义异常,在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
思路
首先,题目的结果是输入相应的a,b,然后输出正确答案。这是一个宗旨,写代码就是要为了一个目的而创造性的去写它。
其次,我们看,这次与上次不相同的是,我们需要自己去定义一个异常类,并且人为的去设置去抛出它。代码
import java.util.Scanner; public class demo9 { public static void main(String args[]){ while(true){ System.out.println("这是计算绝对值表达式 |a-b|"); Scanner s=new Scanner(System.in);//输入前进行扫描,等待a,b在键盘上的输入 System.out.println("请输入a");//输如a,b int a=s.nextInt(); System.out.println("请输入b"); int b=s.nextInt(); int g; chuliyichang d=new chuliyichang();//定义一个处理异常类的对象 try{ int c=d.chuli(a,b); System.out.println(" |a-b|="+c); System.out.println("此时未出现异常"); } catch(MyException e){ g=b-a; System.out.print(e);//把接收到的异常信息赋值给e并输出"此时b>a" System.out.println(" |a-b|="+g); System.out.println("此时出现了异常"); } } } } class chuliyichang{//定义一个异常类,出现异常时抛出信息 public int chuli(int a,int b)throws MyException{//定义一个函数处理异常 int g; if(b>a){ throw new MyException("此时b>a"+"\n");//需要抛出的异常信息 } else{ g=a-b;//正常情况下输出值 } return g;//返回值 } } class MyException extends Exception{//自定义了一个异常类,继承自Exception类 MyException(String msg){//构造函数 super(msg);//继承于父类用super } }
- 结果
- 讲解
int g;
chuliyichang d=new chuliyichang();//定义一个处理异常类的对象
创建一个变量g,用来存放稍后运行中 a-b的绝对值。
而第二行则是创建一个chuliyichang 的异常类的对象,格式是这样的。
由于这种不是静态方法static,故在定义时,需要 chuliyichang是对象命名, d是方法名,换句话说就是它的一个别名。这种方式也就是自己定义一个类的一种格式。
class chuliyichang{//定义一个异常类,出现异常时抛出信息
public int chuli(int a,int b)throws MyException{//定义一个函数处理异常
int g;
if(b>a){
throw new MyException(“此时b>a”+”\n”);//需要抛出的异常信息
}
else{
g=a-b;//正常情况下输出值
}
return g;//返回值
}
}
这一段代码是我们在自定义异常类。
先定义一个变量g;
如果b>a, 也就是a-b 要为负数了 ,这是抛出异常,执行catch模块的程序
如果a>b,正常继续执行后输出即可。
class MyException extends Exception{//自定义了一个异常类,继承自Exception类
MyException(String msg){//构造函数
super(msg);//继承于父类用super
}
这一定是自己定义异常类时,规定的写法。(通俗的来说)
父类的集合就必须要继承,才能使用。
- *具体的参考
在这里