软件园学生在线

  • {{ item.name }}
  • 2023试用期

登录与注册

【后端一】卢俊宇

  • Rimuru
  • 2023-10-29
  • 0

产品说明(简易计算器)


1.使用

提供了三个 key
num1 和 num2 和 c
num1 为第一个数
num2 为第二个数
c 用来储存运算符号,支持 + 、- 、* 、/ 四种运算

2.考虑情况

(1) 考虑了数据范围的问题,参考了群里大佬说的 BigDecimal。

(2) 考虑了数据是否准确的问题,检验了 num1 和 num2 是否为数字,c 是否为支持的运算符号。

(3) 考虑了除数是否为 0 的情况,在读入数据之后进行判断。

(4) 考虑了除法得出得结果,有可能会出现无限小数的情况,所以限定了 6 位小数。


学习历程


1.BigDemical

在网上查询了相关资料,学会了如何定义一个 BigDecimal 变量,了解了附带的一些运算方法。

2.判断字符串是否为数字

private static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
    public static boolean isNumeric2(String str) {
        return str != null && NUMBER_PATTERN.matcher(str).matches();
    }

这一段是从网上抄的,大致意思是,先设定了一个包含数字的变量,然后写一个方法,调用这个变量来检验别的字符串是否符合要求,如果符合的话,就返回 True 的结果,即是数字,否则返回 False 的结果,不是一个数字。

运用这一个来对 num1 和 num2 进行判断,如果不是数字,则返回 错误,请正确输入!

判断除数是否为 0 还有判断 c 是否为四则运算符比较容易


代码

Ps:由于运用了 BigDecimal 自带的运算方法,就没有写 Service 了

@RestController
public class MainController {
    /**用来判断字符串内是否都为数字**/
    private static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
    public static boolean isNumeric2(String str) {
        return str != null && NUMBER_PATTERN.matcher(str).matches();
    }

    @Autowired
    MainService calc;

    @GetMapping("/")
    public String HelloWorld(){
        return "Hello World!";
    }

    @PostMapping("/calc")
    public String add(@RequestParam String num1, @RequestParam String num2, @RequestParam String c){
        BigDecimal num11;
        BigDecimal num22;
        if(isNumeric2(num1)) num11 = new BigDecimal(num1);
            else return "错误,请正确输入!";
        if(isNumeric2(num1)) num22 = new BigDecimal(num2);
            else return "错误,请正确输入!";
        if(c.equals("/") && num2.equals("0")) return "错误,请正确输入!除数不应为 0" ;

        return switch (c) {
            case " ", "+" -> "计算结果为:" + num11.add(num22);
            case "-" -> "计算结果为:" + num11.subtract(num22);
            case "*" -> "计算结果为:" + num11.multiply(num22);
            case "/" -> "计算结果为:" + num11.divide(num22,6, RoundingMode.HALF_UP);
            default -> "错误,请正确输入!";
        };
    }
}
Rimuru
Rimuru
© 2025 软件园学生在线
Theme by Wing