废话不多说直接上代码
运算:
public class Operation { public static double getResult(double a,double b,String operate){ double result = 0; switch (operate) { case "+": result = a+b; break; case "-": result = a-b; break; case "*": result = a*b; break; case "/": result = a/b; break; default: break; } return result; } }
客户端:
public class Run { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数字A"); double a = (double)scanner.nextInt(); System.out.println("请输入数字B"); double b = (double)scanner.nextInt(); System.out.println("运算符号"); String operate = scanner.next(); double result = Operation.getResult(a, b, operate); System.out.println(result); } }
上面代码仅仅实现了封装,并没有体现出面向对象的另外两大特性,请看下面的代码
运算类
public class Operation { private double a; private double b; public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } public double getResult(){ double result = 0; return result; } }
加法类继承运算类:
public class OperationAdd extends Operation { @Override
public double getResult() { double result = 0; result = getA()+getB(); return result; } }
减法类继承运算类:
public class OperationSub extends Operation{ @Override
public double getResult() { double result = 0; result = getA()-getB(); return result; } }
乘法类继承运算类:
public class OperationMul extends Operation{ @Override
public double getResult() { double result = 0; result = getA()*getB(); return result; } }
除法类继承运算类:
public class OperationDiv extends Operation { @Override
public double getResult() { double result = 0; if(getB() == 0){ System.out.println("除数不能为0"); } result = getA()/getB(); return result; } }
看到这里可能有人会问那我们如何让计算器去识别我们希望用哪一个算法
在这里我们就要使用到简单的工厂模式了 代码如下:
public class OperationFactory { public static Operation createOperation(String operation) { Operation ope = null; switch (operation) { case "+": ope = new OperationAdd(); break; case "-": ope = new OperationSub(); break; case "*": ope = new OperationMul(); break; case "/": ope = new OperationDiv(); break;
} return ope;
} }
那么让程序跑起来
public class Run { public static void main(String[] args) { Operation ope; ope=new OperationFactory().createOperation("/"); ope.setA(10); ope.setB(5); double result = ope.getResult(); System.out.println(result); } }
输出结果:
2.0