zoukankan      html  css  js  c++  java
  • 简单计算器

    简单计算器

    今天看了下设计模式的简单工厂模式,对照着写了个简单的计算器,代码非常简单

    运算符操作类

    public abstract class OPerator {
    
        private double numberA;
        private double numberB;
        private double result;
    
        public double getNumberA() {
            return numberA;
        }
        public void setNumberA(double numberA) {
            this.numberA = numberA;
        }
    
        public double getNumberB() {
            return numberB;
        }
    
        public void setNumberB(double numberB) {
    
            this.numberB = numberB;
        }
    
        public double getResult() {
            return result;
        }
    
        public void setResult(double result) {
            this.result = result;
        }
    }
    

    运算操作工厂

    public class OpFactory{
        public OPerator oPerator = null;
        public OPerator compute(char opStr,double numberA, double numberB){
    	        switch (opStr){
    	            case '+':
    	                oPerator = new Add(numberA,numberB);
    	                break;
    	            case'-':
    	                oPerator = new Sub(numberA,numberB);
    	                break;
    	            case'*':
    	            	oPerator= new Mul(numberA,numberB);
    	            	break;
    	            case'/':
    	            	oPerator = new Div(numberA, numberB);
    	            	break;
    	            default:
    	            	System.out.println("计算错误!");
    	            	break;
    	        }
            return oPerator;
        }
    }
    

    加减乘除运算实现

    public class Add extends OPerator{
    
        public Add(double numberA, double numberB){
            this.setNumberA(numberA);
            this.setNumberB(numberB);
            this.setResult(this.getNumberA()+this.getNumberB());
        }
    }
    
    public class Sub extends OPerator{
    	
        public Sub(double numberA, double numberB){
            this.setNumberA(numberA);
            this.setNumberB(numberB);
            this.setResult(this.getNumberA()-this.getNumberB());
        }
    }
    
    public class Mul extends OPerator{
        public Mul(double numberA, double numberB){
            this.setNumberA(numberA);
            this.setNumberB(numberB);
            this.setResult(this.getNumberA()*this.getNumberB());
        }
    }
    
    public class Div extends OPerator{
    	public Div(double numberA, double numberB){
    		this.setNumberA(numberA);
    		this.setNumberB(numberB);
    		if(0 == this.getNumberB()){
    			try {
    				throw new Exception("除数不能为0");
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}else{
    			this.setResult(this.getNumberA()/this.getNumberB());
    		}
    	}
    }
    

    测试类

    	public class Mc {
        @Test
        public void addTest(){
            System.out.println("请输入数字:");
            Scanner scanner1 = new Scanner(System.in);
            double numberA = scanner1.nextDouble();
    
            System.out.println("请输入操作符:'+','-','*','/'");
            Scanner sc = new Scanner(System.in);
            String opStr = sc.nextLine();
    
            System.out.println("请输入数字:");
            Scanner scanner2 = new Scanner(System.in);
            double numberB = scanner2.nextDouble();
    
            OPerator oPerator = new OpFactory().compute(opStr.charAt(0),numberA,numberB);
    
            System.out.println("结果:"+oPerator.getResult());
        }
    
    }
    

    第一次写:若是有不对的地方,欢迎拍砖。其他的我也不会说话了,感觉没啥话,巴拉巴拉一大堆,想吐槽了.....拜拜,下次在写

    平凡是我的一个标签
  • 相关阅读:
    在WCF中使用Flag Enumerations
    WCF开发教程资源收集
    [转]WCF 4 安全性和 WIF 简介
    Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]
    Asp.Net Web API 2第十八课——Working with Entity Relations in OData
    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
    Asp.Net Web API 2第十五课——Model Validation(模型验证)
    函数 生成器 生成器表达式
    函数的进阶
  • 原文地址:https://www.cnblogs.com/guyanzy/p/8688034.html
Copyright © 2011-2022 走看看