用Java实现简单计算器
实现为用户在控制台进行交互的计算器!
功能可进一步改进,读者可自行修改,本代码仅针对Java初学者!
- 可改进用户交互的方式!
- 可提高数据合法性的检验!
- 可增加计算器的功能!
- 可拆分计算器各实现的模块,实现面向对象的思想!
- ……
import java.math.BigDecimal;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @className TheCalculator
* @Description
* @Author pl
* @Date 2021/4/4 20:32
* @Version 1.0
*/
public class TheCalculator {
static StringBuffer stringBuffer = new StringBuffer("");//打印结果
static char[] opChar = {'+','-','*','/'};
public static void main(String[] args) {
calculatorStartTig();
runCalculator();
}
/**
* 计算器开始运行
*/
public static void runCalculator(){
Scanner sc = new Scanner(System.in);
int op;//操作符
BigDecimal bigDecimal;//进行运算
BigDecimal answer = new BigDecimal("0");//存储结果
System.out.println("请输入操作数,退出请键入退出......");
String in = sc.nextLine();//接收操作数
while(!checkIn(in)){
if("退出".equals(in)){
System.out.println("计算结果为:" + stringBuffer.append("=").append(answer).toString());
return ;
}
System.out.println("请输入正确的操作数......");
in = sc.nextLine();
}
bigDecimal = new BigDecimal(in);//准备操作数
stringBuffer.append(in);
answer = answer.add(bigDecimal);
//合法性校验
while(!"退出".equals(in)){
System.out.println("请输入需要的操作符:1.加 2.减 3.乘 4.除,退出即键入-1");
op = sc.nextInt();
//操作符不合法
while(!checkOp(op)) {
if(op == -1){
System.out.println("计算结果为:" + stringBuffer.append("=").append(answer).toString());
return ;
}
System.out.println("操作符不合法,请重新输入......");
op = sc.nextInt();
}
//操作符合法
stringBuffer.append(opChar[op - 1]);
System.out.println("请输入操作数......");
sc.nextLine();//吃空行
in = sc.nextLine();
while(!checkIn(in)) {
//操作数不合法
System.out.println("操作数不合法,请重新输入......");
in = sc.nextLine();
}
//操作数合法
stringBuffer.append(in);
bigDecimal = new BigDecimal(in);
if(op == 1){
answer = answer.add(bigDecimal);
}else if(op == 2){
answer = answer.subtract(bigDecimal);
}else if(op == 3){
answer = answer.multiply(bigDecimal);
}else{
answer = answer.divide(bigDecimal);
}
printfBufferAnswer(answer);//打印目前的计算结果
}
System.out.println("计算结果为:" + stringBuffer.append("=").append(answer).toString());
}
/**
* 简单的检查输入的操作符是否合法
* @param op
* @return
*/
public static boolean checkOp(int op){
if(op == 1 || op == 2 || op == 3 | op == 4)
return true;
else
return false;
}
/**
* 简单的检查输入的操作数是否合法
* @param in
* @return
*/
public static boolean checkIn(String in){
if("".equals(in) || in == null) return false;
String regex = "^\\d+(\\.\\d+)?";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(in);
boolean flag = m.matches();
if(!flag || "0".equals(in)) return false;
return true;
}
/**
* 打印缓冲结果
* @param answer
*/
public static void printfBufferAnswer(BigDecimal answer){
System.out.println(stringBuffer.toString() + "=" + answer.toString());
}
/**
* 计算器启动窗口
*/
public static void calculatorStartTig(){
System.out.println("------------------------------------");
System.out.print("|");System.out.println(" |");
System.out.print("|");System.out.print(" 计算器小程序已启动,支持 加 减 乘 除 ");System.out.println(" |");
System.out.print("|");System.out.print(" 请键入相应的数据,并按提示键入操作指令 ");System.out.println(" |");
System.out.print("|");System.out.print(" 退出请键入:-1 ");System.out.println(" |");
System.out.print("|");System.out.println(" |");
System.out.println("------------------------------------");
}
}