zoukankan      html  css  js  c++  java
  • java实现计算器

    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;

    }


    }

  • 相关阅读:
    马赛克算法及iOS代码实现
    iOS制作Static Library(静态库),实现多工程的连编
    iOS由ImageIO.framework实现gif的系统解码
    KVC和KVO实现监听容器类(数组等)的变化
    Dynamicaly Typed(动态定型), Objective-C Runtime Programming
    Mac OSX下修改hosts文件
    MAC配置SVN服务器
    Encoding非常用编码转换
    Block作为参数使用
    UITextField关闭系统自动联想和首字母大写功能
  • 原文地址:https://www.cnblogs.com/zhulina-917/p/9679654.html
Copyright © 2011-2022 走看看