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;

}


}

 

posted @ 2018-09-20 11:10  纳兰容若♫  阅读(166)  评论(0编辑  收藏  举报