利用面向对象实现的控制台计算器

利用面向对象实现的控制台计算器

/**
 * ConsoleCalc.java
 * 控制台计算器
 * 
@author 邓超
 * 
@version 0.1 2008-5-7
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


import  java.util.Scanner;

public   class  ConsoleCalc  {
    
    
public static void main(String[] args) throws Exception {
        
        
//保存二目运算所使用的两个操作数
        double numberA , numberB;
        
//保存二目运算所使用的运算符
        char operator;
        
//将Scanner类示例化为input对象用于接收用户控制台输入
        Scanner input = new Scanner(System.in);

        
try {
            
//提示并接收控制台用户输入
            System.out.print("请输入第一个数:");
            numberA 
= input.nextDouble();
            
            System.out.print(
"请选择运算符号(+、-、*、/):");
            operator 
= input.next().charAt(0);
            
            System.out.print(
"请输入第二个数:");
            numberB 
= input.nextDouble();

            
//获得从Operation类返回的二目运算结果
            Operation oper;
            oper 
= OperationFactory.createOperate(operator);
            oper.numberA 
= numberA;
            oper.numberB 
= numberB;
            
double result = oper.GetResult();
            
            
//控制台输出运算结果
            System.out.print(" 运算结果为:" + result);
        }
 catch (Exception ex) {
            
//控制台输出抛出的异常信息
            System.out.print(" 输入有误,信息:" + ex.getMessage());
        }

    }

}
/**
 * Operation.java
 * Operation 运算类
 * 
@author 邓超
 * 
@version 0.1 2008-5-9
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


public   class  Operation  {
    
    
double numberA = 0;
    
double numberB = 0
    
    
public double GetResult() throws Exception {
        
        
//保存二目运算结果
        double result = 0;
        
//返回二目运算结果
        return result;
    }

}
/**
 * OperationFactory.java
 * 简单运算工厂类
 * 
@author 邓超
 * 
@version 0.1 2008-5-9
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


public   class  OperationFactory  {
    
    
public static Operation createOperate(char operate) throws Exception {
        
        Operation oper 
= null;
        
        
switch (operate) {
            
case '+':
                oper 
= new OperationAdd();
                
break;
            
case '-':
                oper 
= new OperationSub();
                
break;
            
case '*':
                oper 
= new OperationMul();
                
break;
            
case '/':
                oper 
= new OperationDiv();
                
break;
            
default:
                
//是未定义的运算符就抛出异常 
                throw new Exception("符号异常,不能识别的运算符!");
        }

        
return oper;
    }

}
/**
 * OperationAdd.java
 * 加法类
 * 
@author 邓超
 * 
@version 0.1 2008-5-9
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


// 继承父类Operation 运算类
public   class  OperationAdd  extends  Operation  {
    
    
//重写父类GetResult()方法
    public double GetResult() {

        
//保存加法运算结果
        double result = 0;
        
//计算加法运算结果
        result = numberA + numberB;
        
//返回加法运算结果
        return result;
    }

}
/**
 * OperationSub.java
 * 减法类
 * 
@author 邓超
 * 
@version 0.1 2008-5-9
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


// 继承父类Operation 运算类
public   class  OperationSub  extends  Operation  {
    
    
//重写父类GetResult()方法
    public double GetResult() {

        
//保存减法运算结果
        double result = 0;
        
//计算减法运算结果
        result = numberA - numberB;
        
//返回减法运算结果
        return result;
    }

}
/**
 * OperationMul.java
 * 乘法类
 * 
@author 邓超
 * 
@version 0.1 2008-5-9
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


// 继承父类Operation 运算类
public   class  OperationMul  extends  Operation  {
    
    
//重写父类GetResult()方法
    public double GetResult() {

        
//保存乘法运算结果
        double result = 0;
        
//计算乘法运算结果
        result = numberA * numberB;
        
//返回乘法运算结果
        return result;
    }

}
/**
 * OperationDiv.java
 * 除法类
 * 
@author 邓超
 * 
@version 0.1 2008-5-9
 * 开发/测试环境:jdk1.6 + eclipse SDK 3.3.2
 
*/


// 继承父类Operation 运算类
public   class  OperationDiv  extends  Operation  {
    
    
//重写父类GetResult()方法
    public double GetResult() throws Exception {

        
//保存除法运算结果
        double result = 0;
        
if (numberB == 0)
            
//除数为0就抛出异常 
            throw new Exception("运算异常,除数不能为0!");
        
//计算除法运算结果
        result = numberA / numberB;
        
//返回除法运算结果
        return result;
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值