我上次的那个类建的公共类太多啦,这次就一个公共类。
还是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;
}