用Java实现简单计算器

这篇博客介绍了如何使用Java编程实现一个简单的控制台交互式计算器,适合Java初学者。文章提到,代码可以进一步改进,包括优化用户交互、增强数据合法性检查、扩展计算器功能以及采用面向对象的设计思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Java实现简单计算器

实现为用户在控制台进行交互的计算器!
功能可进一步改进,读者可自行修改,本代码仅针对Java初学者!

  1. 可改进用户交互的方式!
  2. 可提高数据合法性的检验!
  3. 可增加计算器的功能!
  4. 可拆分计算器各实现的模块,实现面向对象的思想!
  5. ……
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("------------------------------------");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值