利用面向对象实现的控制台计算器 /** */ /** * 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; }}