java 中文计算器_java实现计算器

e77ae96a743c4a5b58f1ba70b2abc25e.png

e5ba591f2d72864599ec3a5c76e12e8f.png

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值