java计算器进阶(抛出异常)

我上次的那个类建的公共类太多啦,这次就一个公共类。

还是soeasy,这是属于自定义异常,throws是属于抛出异常,try  catch是在捕获异常,就是除数为0的时候回抛出异常,并且输出异常,但是程序会一直执行下去

import java.util.Scanner;

public class Jisuanqi {
    public static void main(String[] args) {
        double a,b;
        char x;
        System.out.println("切记输入的数字与符号要留出空格要不然会报错的");
        System.out.println("这次加的抛出异常是分母为0是会出现异常");
        while(true) {
            Scanner cin = new Scanner(System.in);
            a = cin.nextDouble();
            x = cin.next().charAt(0);
            b = cin.nextDouble();
            Usefuhao u = new Usefuhao();
            u.start(x, a, b);
        }
    }
}
class Usefuhao {
    public void start(char x,double a,double b){
        switch (x){
            case '+':
                jia j = new jia();
                System.out.println("a + b = "+j.yunxin(a,b));
                break;
            case '-':
                jian jan = new jian();
                jan.yunxin(a,b);
                System.out.println("a - b = "+jan.yunxin(a,b));
                break;
            case '*':
                chen c = new chen();
                System.out.println("a * b = "+c.yunxin(a,b));
                break;
            case '/':
                chu cu = new chu();
                try {
                    System.out.println("a / b = "+cu.yunxin(a,b));
                }catch (YiChangException e){
                    e.printStackTrace();
                }
                break;
            default:
                System.out.println("您输入的符号不在我的计算范围之内");
                break;
        }
    }
}
class jia implements fuhao {
    public double yunxin(double a,double b) {
        return a+b;
    }
}
class jian implements fuhao{
    public double yunxin(double a,double b){
        return  a-b;
    }
}
class chen implements fuhao{
    public double yunxin(double a,double b){
        return a*b;
    }
}
class chu implements fuhao{
    public double yunxin(double a,double b) throws YiChangException {
        if(b==0){
            throw new YiChangException("您输入的分母为0,不能进行除法运算");
        }else
            return a/b;
    }
}
class YiChangException extends Exception{
    public YiChangException() {
    }
    public YiChangException(String message){
        super(message);
    }
}
abstract interface fuhao {
    public abstract double yunxin(double n,double b) throws YiChangException;
}

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值