Main_business.java

import java.util.Scanner;

public class Main_business {
public void getMyCalculate() throws Exception {
Check_input myService = new Check_input();

System.out.println("请输入数字1");
//传入正则表达式
myService. incoming_rules("^([+][0-9][0-9]*|[0-9][0-9]*)+(.[0-9]{1,4})?");

String sDigital = myService.Num_Service();
float fDigital = Float.parseFloat(sDigital);

System.out.println("请输入符号");
String bSymbol = myService.operator_Service();
Digital_information execution_method = new OperationFactory().createOperation(bSymbol);

System.out.println("请输入数字2");
myService. incoming_rules("^([1-9][0-9]*)+(.[0-9]{1,4})?");
String sDigital2 = myService.Num_Service();
float fDigital2 = Float.parseFloat(sDigital2);

execution_method.setpDigital1(fDigital);
execution_method.setpDigital2(fDigital2);
float result = execution_method.getResult();
System.out.println("执行结果"+result);

System.out.println("继续操作请按0,退出请按任意键");
Scanner sc = new Scanner(System.in);
String option = sc.nextLine();
if(option.equals("0")) {
new Main_business().getMyCalculate();
}else {
System.exit(0);
}
}
}

Digital_information.java

public class Digital_information implements ResultHandler{
protected float pDigital1 ;
protected float pDigital2;
protected String pOperation;

public float getpDigital1() {
return pDigital1;
}

public void setpDigital1(float pDigital1) {
this.pDigital1 = pDigital1;
}

public float getpDigital2() {
return pDigital2;
}

public void setpDigital2(float pDigital2) {
this.pDigital2 = pDigital2;
}

public String getpOperation() {
return pOperation;
}

public void setpOperation(String pOperation) {
this.pOperation = pOperation;
}

@Override
public float getResult() {
// TODO Auto-generated method stub
return 0;
}

}

OPerationFactory.java

public class OperationFactory {

public Digital_information createOperation(String operator) {
// TODO Auto-generated method stub

Digital_information ope = null;

switch (operator) {
case "+":
ope = new AddResult();
break;
case "-":
ope = new Subtraction();
break;
case "*":
ope = new MultiplyResult();
break;
case "/":
ope = new DevideResult();
break;
default:
break;
}

return ope;

}

}

ResultHandler.java

public interface ResultHandler {
public float getResult();

}

AddResult.java

public class AddResult extends Digital_information{
float pDigital;
//重写父类里面的方法
public float getResult() {
// TODO Auto-generated method stub

pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();

pDigital = pDigital1+pDigital2;

return pDigital;
}

}

DevideResult.java

public class DevideResult extends Digital_information{
float pDigital;

public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();

pDigital = pDigital1/pDigital2;

return pDigital;
}
}

MultiplyResult.java

public class MultiplyResult extends Digital_information{
float pDigital;

public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();

pDigital = pDigital1*pDigital2;
return pDigital;
}
}

Subtraction.java

public class Subtraction extends Digital_information{
float pDigital;

public float getResult() {
// TODO Auto-generated method stub
pDigital1 = super.getpDigital1();
pDigital2 = super.getpDigital2();

pDigital = pDigital1/pDigital2;
return pDigital;
}
}

 check_input.java

import java.util.Scanner;
import java.util.regex.Pattern;

import com.service.Exception.Check_exception;

public class Check_input {

String rules;
Scanner sc = new Scanner(System.in);
public String Num_Service() throws Exception {

String sDigital;
do {
try {

sDigital = sc.nextLine();

Pattern pattern = Pattern.compile(rules);//返回一个Pattern的对象。
boolean check_num2 = pattern.matcher(sDigital).matches();

if (check_num2==true) {
return sDigital;
}

else {
System.out.println("输入不正确,请重新输入");
//sDigital = sc.nextLine();
}
} catch (Exception e) {
System.out.println("请输入正确格式");
}
} while (true);
}

public String operator_Service() throws Check_exception {

String operator;
do {
try {
operator = sc.nextLine();

if (operator.equals("+")||operator.equals("-")||operator.equals("*")||operator.equals("/")) {
return operator;
}
else {
System.out.println("输入不正确,请重新输入");
//sDigital = sc.nextLine();
}
} catch (Exception e) {
System.out.println("请输入正确格式");
}
} while (true);

}
//接收前面出入的规则
public void incoming_rules(String rules) {
// TODO Auto-generated method stub
this.rules=rules;

}

}

java实现计算器的更多相关文章

  1. java简单计算器

    写的一个小计算器,留着以后看吧. import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import ...

  2. java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  3. 【java图形计算器】 java awt swing组件应用

    package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  4. Java实例---计算器实例

    1.计算器上的键的显示名字 1.0 继承JFrame类 public class Calculate extends JFrame { } 1.1定义常量 /** 计算器上的键的显示名字 */ pub ...

  5. java代码----------计算器代码

    总结: 很多不完善—— package com.rue; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.a ...

  6. java代码---------计算器实现

    总结:虽然,没有人会帮你到底,凭什么要对你怜香惜玉 注意实现哪一个运算就把相关代码放在else if这个判断语句里面 package com.rue; import java.awt.BorderLa ...

  7. java代码------计算器

    总结:我用if()语句写计算功能的代码时,实现不了,与switch_-catch语句不一样.不知到怎么实现 package com.p; import javax.swing.*; import ja ...

  8. 一个简单的java年龄计算器

    制作一个如下图年龄计算器 根据题目,我做了一个由Calendar类以及年月日各相减得到的年龄,当然正确的方法不止一个,以下为我的源代码和结果截图: package com.Date; import j ...

  9. Java可视化计算器

    利用java中的AWT和SWING包来做可视化界面. 首先来简单了解一下这两个包: AWT和Swing都是Java中用来做可视化界面的.AWT(Abstract Window Toolkit):抽象窗 ...

随机推荐

  1. linux快速搭建

    ------------------------------------------ 转载内容 --------------------- Linux升级命令有两个分别是yum upgrade和yum ...

  2. 15.selenium_case01

    # 与百度首页交互 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait f ...

  3. 安利一个_Java学习笔记总结

    javaIO 字符编码 多线程 线程池 ArrayList遍历方式 LinkedList遍历方式 Vector遍历方式 Vector, ArrayList, LinkedList 的区别是什么? Ha ...

  4. UVA1374-Power Calculus(迭代加深搜索)

    Problem UVA1374-Power Calculus Accept:323  Submit:2083 Time Limit: 3000 mSec  Problem Description  I ...

  5. [matlab] 19.matlab 基础几何学

    polyshape  函数可创建由二维顶点定义的多边形,并返回具有描述其顶点.实心区域和孔的各种属性的 polyshape 对象.例如,pgon = polyshape([0 0 1 1],[1 0 ...

  6. 初学Python——字符串相关操作

    基本字符串操作 Pyhton中字符串的格式化输出在前面已经总结了,接下来介绍一些常用的字符串操作 先定义一个字符变量,以下的操作都以此为例: name=" my name is china ...

  7. 数组复制的五种方式(遍历循环一一赋值、System.arraycopy、地址赋值、克隆clone()、Arrays.copyof())

    package com.Summer_0424.cn; import java.util.Arrays; import java.util.concurrent.CopyOnWriteArrayLis ...

  8. python:unittest之discover()方法批量执行用例

    自动化测试过程中,自动化覆盖的功能点和对应测试用例之间的关系基本都是1 VS N,如果每次将测试用例一个个单独执行,不仅效率很低, 无法快速反馈测试结果,而且维护起来很麻烦.在python的单元测试框 ...

  9. maven下载及安装

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录,本 ...

  10. Python黑魔法 --- 异步IO( asyncio) 协程

    python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...