简易运算器java编程
***1.简单运用 面向对象思想设计,封装、继承、多态,简单工厂设计模式
***2.前后台分离,面向对象,业务封装,松耦合,易后期修改和维护
UML图:
1.新建operate (运算) java项目
2.新建framwork (框架层) 包
3.framwork 包下新建Operation类(运算基类)
- /**
- *
- */
- package framwork;
- /**
- * 运算基类
- * @author xpz
- *
- */
- public class Operation {
- public double getResult(double numberA,double numberB) throws Exception {
- double result = 0;
- return result;
- }
- }
a.新建OperationAdd.java 继承 extends Operation -------------加法
- /**
- *
- */
- package util;
- import framwork.Operation;
- /**
- * 加法运算
- * @author xpz
- *
- */
- public class OperationAdd extends Operation {
- /* (non-Javadoc)
- * @see framwork.Opration#getResult()
- */
- public double getResult(double numberA,double numberB) {
- return numberA+numberB;
- }
- }
- /**
- *
- */
- package util;
- import framwork.Operation;
- /**
- * 减法运算
- * @author xpz
- *
- */
- public class OperationSub extends Operation {
- /* (non-Javadoc)
- * @see framwork.Opration#getResult()
- */
- public double getResult(double numberA,double numberB) {
- return numberA-numberB;
- }
- }
c.新建OperationMul.java 继承 extends Operation -------------乘法
- /**
- *
- */
- package util;
- import framwork.Operation;
- /**
- * 乘法运算
- * @author xpz
- *
- */
- public class OperationMul extends Operation {
- /* (non-Javadoc)
- * @see framwork.Operation#getResult()
- */
- public double getResult(double numberA,double numberB) {
- return numberA*numberB;
- }
- }
- /**
- *
- */
- package util;
- import framwork.Operation;
- /**
- * 除法运算
- * @author xpz
- *
- */
- public class OperationDiv extends Operation {
- /* (non-Javadoc)
- * @see framwork.Operation#getResult()
- */
- public double getResult(double numberA,double numberB) throws Exception{
- if(numberB==0)
- throw new Exception("除数不能为0!");
- return numberA/numberB;
- }
- }
5.framwork包下新建OperationFactory.java (运算工厂类)
- /**
- *
- */
- package framwork;
- import util.OperationAdd;
- import util.OperationDiv;
- import util.OperationMul;
- import util.OperationSub;
- /**
- * 运算工厂类
- * @author xpz
- *
- */
- public class OperationFactory {
- public static Operation ceateOperate(String operate){
- 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:
- break;
- }
- return oper;
- }
- }
- /**
- *
- */
- package test;
- import java.util.Scanner;
- import framwork.OperationFactory;
- /**
- * @author xpz
- *
- */
- public class OperationTest {
- /**
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- double numberA; //数字A
- double numberB; //数字B
- String operate; //运算符
- while(true){
- //Console控制台输入扫描
- @SuppressWarnings("resource")
- Scanner sc=new Scanner(System.in);
- System.out.println("运算测试================");
- //输入数字A
- System.out.println("请输入数字A:");
- try {
- numberA=sc.nextDouble();
- } catch (Exception e) {
- System.out.println("输入的数字格式不符!");
- continue;
- }
- //输入运算符
- System.out.println("请输入运算符:--- + - * /");
- operate=sc.next();
- if(null==OperationFactory.ceateOperate(operate)){
- System.out.println("输入的运算符不符!");
- continue;
- }
- //输入数字B
- System.out.println("请输入数字B:");
- try {
- numberB=sc.nextDouble();
- } catch (Exception e) {
- System.out.println("输入的数字格式不符!");
- continue;
- }
- //输出打印
- System.out.println(numberA+operate+numberB+"=");
- System.out.println(OperationFactory.ceateOperate(operate).getResult(numberA,numberB));
- break;
- }
- }
- }
- 运算测试================
- 请输入数字A:
- 1
- 请输入运算符:--- + - * /
- +
- 请输入数字B:
- 2
- 1.0+2.0=
- 3.0
- 运算测试================
- 请输入数字A:
- 1.12334
- 请输入运算符:--- + - * /
- *
- 请输入数字B:
- 557657.34
- 1.12334*557657.34=
- 626438.7963155999
- 运算测试================
- 请输入数字A:
- 1
- 请输入运算符:--- + - * /
- /
- 请输入数字B:
- 0
- 1.0/0.0=
- Exception in thread "main" java.lang.Exception: 除数不能为0!
- at util.OperationDiv.getResult(OperationDiv.java:20)
- at test.OperationTest.main(OperationTest.java:61)
- 运算测试================
- 请输入数字A:
- a
- 输入的数字格式不符!
- 运算测试================
- 请输入数字A:
- 运算测试================
- 请输入数字A:
- 1
- 请输入运算符:--- + - * /
- a
- 输入的运算符不符!
- 运算测试================
- 请输入数字A:
相关推荐
- 第十三章Java网络编程
- 9月编程语言榜:Java再次夺冠,Python前三
- GitHub上260K Stars的P8架构师纯手写的Java高并发编程详解
- GitHub上260K Stars的P8架构师纯手写的Java高并发编程详解
- JAVA自学笔记(6)—异常、线程、函数式编程
- java8面向对象编程:引用传递实例分析
- Java高并发编程学习--14. 线程的ThreadGroup的基本操作
- Java WebSocket编程 开发、部署和保护动态Web应用 参考
- 2020年的六种编程语言排名中,java排第几只有不到1%的人知道
- 超过1000多程序员面试经历,收集了阿里巴巴面试3年总结的108道Java面试题:MySQL+redis+计算机网络+操作系统+Java编程+架构设计
- Spring AOP学习之aspectj
- 【IDEA】SpringBoot: No configuration files matching pattern 'application' found 解决