简易运算器java编程

***1.简单运用 面向对象思想设计,封装、继承、多态,简单工厂设计模式

***2.前后台分离,面向对象,业务封装,松耦合,易后期修改和维护

UML图:

简易运算器java编程

1.新建operate (运算) java项目

2.新建framwork (框架层)  包 

3.framwork 包下新建Operation类(运算基类)

[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package framwork;  
  5.   
  6. /**  
  7.  * 运算基类  
  8.  * @author xpz  
  9.  *  
  10.  */  
  11. public class Operation {  
  12.       
  13.     public double getResult(double numberA,double numberB) throws Exception {  
  14.         double result = 0;    
  15.         return result;        
  16.     }  
  17. }  
4.新建util 包

 a.新建OperationAdd.java 继承 extends Operation -------------加法

[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package util;  
  5.   
  6. import framwork.Operation;  
  7.   
  8. /**  
  9.  * 加法运算  
  10.  * @author xpz  
  11.  *  
  12.  */  
  13. public class OperationAdd extends Operation {  
  14.   
  15.     /* (non-Javadoc)  
  16.      * @see framwork.Opration#getResult()  
  17.      */  
  18.     public double getResult(double numberA,double numberB) {          
  19.         return numberA+numberB;  
  20.     }  
  21.       
  22. }  
 b.新建OperationSub.java 继承 extends Operation -------------减法
[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package util;  
  5.   
  6. import framwork.Operation;  
  7.   
  8. /**  
  9.  * 减法运算  
  10.  * @author xpz  
  11.  *  
  12.  */  
  13. public class OperationSub extends Operation {  
  14.   
  15.     /* (non-Javadoc)  
  16.      * @see framwork.Opration#getResult()  
  17.      */  
  18.     public double getResult(double numberA,double numberB) {          
  19.         return numberA-numberB;  
  20.     }  
  21.   
  22. }  

 c.新建OperationMul.java 继承 extends Operation -------------乘法

[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package util;  
  5.   
  6. import framwork.Operation;  
  7.   
  8. /**  
  9.  * 乘法运算  
  10.  * @author xpz  
  11.  *  
  12.  */  
  13. public class OperationMul extends Operation {  
  14.   
  15.     /* (non-Javadoc)  
  16.      * @see framwork.Operation#getResult()  
  17.      */  
  18.     public double getResult(double numberA,double numberB) {  
  19.         return numberA*numberB;  
  20.     }  
  21.   
  22. }  
 d.新建OperationDiv.java 继承 extends Operation -------------除法
[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package util;  
  5.   
  6. import framwork.Operation;  
  7.   
  8. /**  
  9.  * 除法运算  
  10.  * @author xpz  
  11.  *  
  12.  */  
  13. public class OperationDiv extends Operation {  
  14.   
  15.     /* (non-Javadoc)  
  16.      * @see framwork.Operation#getResult()  
  17.      */  
  18.     public double getResult(double numberA,double numberB) throws Exception{  
  19.         if(numberB==0)  
  20.             throw new Exception("除数不能为0!");  
  21.         return numberA/numberB;  
  22.     }  
  23.   
  24. }  

5.framwork包下新建OperationFactory.java  (运算工厂类)

[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package framwork;  
  5.   
  6. import util.OperationAdd;  
  7. import util.OperationDiv;  
  8. import util.OperationMul;  
  9. import util.OperationSub;  
  10.   
  11. /**  
  12.  * 运算工厂类  
  13.  * @author xpz  
  14.  *  
  15.  */  
  16. public class OperationFactory {  
  17.     public static Operation ceateOperate(String operate){  
  18.         Operation oper=null;  
  19.         switch (operate) {  
  20.         case "+":  
  21.             oper=new OperationAdd();  
  22.             break;  
  23.         case "-":  
  24.             oper=new OperationSub();  
  25.             break;  
  26.         case "*":  
  27.             oper=new OperationMul();  
  28.             break;  
  29.         case "/":  
  30.             oper=new OperationDiv();  
  31.             break;            
  32.         default:  
  33.             break;  
  34.         }  
  35.         return oper;  
  36.     }  
  37. }  
6.新建test包,新建OperationTest.java

[html] view plain copy
  1. /**  
  2.  *   
  3.  */  
  4. package test;  
  5.   
  6. import java.util.Scanner;  
  7.   
  8. import framwork.OperationFactory;  
  9.   
  10. /**  
  11.  * @author xpz  
  12.  *  
  13.  */  
  14. public class OperationTest {  
  15.   
  16.     /**  
  17.      * @param args  
  18.      * @throws Exception   
  19.      */  
  20.     public static void main(String[] args) throws Exception {  
  21.         double numberA; //数字A  
  22.         double numberB; //数字B  
  23.         String operate; //运算符  
  24.           
  25.         while(true){  
  26.               
  27.             //Console控制台输入扫描  
  28.             @SuppressWarnings("resource")  
  29.             Scanner sc=new Scanner(System.in);  
  30.               
  31.             System.out.println("运算测试================");  
  32.               
  33.             //输入数字A  
  34.             System.out.println("请输入数字A:");  
  35.             try {  
  36.                 numberA=sc.nextDouble();  
  37.             } catch (Exception e) {  
  38.                 System.out.println("输入的数字格式不符!");  
  39.                 continue;  
  40.             }  
  41.               
  42.             //输入运算符  
  43.             System.out.println("请输入运算符:---  +  -   *  /");  
  44.             operate=sc.next();  
  45.             if(null==OperationFactory.ceateOperate(operate)){  
  46.                 System.out.println("输入的运算符不符!");  
  47.                 continue;  
  48.             }  
  49.               
  50.             //输入数字B  
  51.             System.out.println("请输入数字B:");  
  52.             try {  
  53.                 numberB=sc.nextDouble();  
  54.             } catch (Exception e) {  
  55.                 System.out.println("输入的数字格式不符!");  
  56.                 continue;  
  57.             }     
  58.               
  59.             //输出打印  
  60.             System.out.println(numberA+operate+numberB+"=");  
  61.             System.out.println(OperationFactory.ceateOperate(operate).getResult(numberA,numberB));  
  62.           
  63.             break;  
  64.         }             
  65.     }  
  66. }  
运行结果

[html] view plain copy
  1. 运算测试================  
  2. 请输入数字A:  
  3. 1  
  4. 请输入运算符:---  +  -   *  /  
  5. +  
  6. 请输入数字B:  
  7. 2  
  8. 1.0+2.0=  
  9. 3.0  
[html] view plain copy
  1. 运算测试================  
  2. 请输入数字A:  
  3. 1.12334  
  4. 请输入运算符:---  +  -   *  /  
  5. *  
  6. 请输入数字B:  
  7. 557657.34  
  8. 1.12334*557657.34=  
  9. 626438.7963155999  
[html] view plain copy
  1. 运算测试================  
  2. 请输入数字A:  
  3. 1  
  4. 请输入运算符:---  +  -   *  /  
  5. /  
  6. 请输入数字B:  
  7. 0  
  8. 1.0/0.0=  
  9. Exception in thread "main" java.lang.Exception: 除数不能为0!  
  10.     at util.OperationDiv.getResult(OperationDiv.java:20)  
  11.     at test.OperationTest.main(OperationTest.java:61)  
[html] view plain copy
  1. 运算测试================  
  2. 请输入数字A:  
  3. a  
  4. 输入的数字格式不符!  
  5. 运算测试================  
  6. 请输入数字A:  
[html] view plain copy
  1. 运算测试================  
  2. 请输入数字A:  
  3. 1  
  4. 请输入运算符:---  +  -   *  /  
  5. a  
  6. 输入的运算符不符!  
  7. 运算测试================  
  8. 请输入数字A: