软件园学生在线

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

登录与注册

  • XP
  • 2023-10-29
  • 0

产品使用

1.如何使用
输入三个变量,第一第三做运算数,第二个为四则运算符。
例:

key value
a 10
b
c 9
2.考虑情况
(1).运算数不为数字
(2).运算符不为+-
/
(3).超过int型的大数

学习历程

一阶段
刚开始照葫芦画瓢,做四则运算需要四个url,后来在询问参考下,选择三个变量的形式。
二阶段
选择了switch语句,但是是double型,不支持大数,或判断数据类型是否有误。https://blog.csdn.net/weixin_44618862/article/details/97647673?spm=1001.2014.3001.5506 在这里找到BigDecimal型,开始使用。
三阶段
使用BigDecimal专有的四则运算方法,在同学的指导下解决除数为零的情况,在 https://zhuanlan.zhihu.com/p/343028457 中找到判断数据类型的方法,不断修整错误。

代码

   package com.example.demo.control;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;

import static com.example.demo.control.test.isNumeric1;

@RestController
public class MainControl {
    @PostMapping ("/calculator")
    public String calculate( String a,String b,String c) {
        if(Objects.equals(c, "0") && Objects.equals(b, "/")){
           return "除数不为零,错误" ;//判定除数不为零
        }
       if(!isNumeric1(a)){//判断数据类型
           return "错误";
       }
        if(!isNumeric1(c)){
            return "错误";
        }
        BigDecimal num1 = new BigDecimal(a);//使用大数
        BigDecimal num2 = new BigDecimal(c);
        String oper = b;
        switch (oper) {
            case"+":
                return "相加结果为"+num1.add(num2);
            case"-":
                return "相减结果为"+num1.subtract(num2);
            case"*":
                return "相乘结果为"+num1.multiply(num2);
            case"/":
                return "相除结果为"+num1.divide(num2,5, RoundingMode.HALF_UP);//保留小数,避免报错
        }

        return "错误";
    }
}

因为BigDecimal运算特殊,故没有写service

package com.example.demo.control;

public class test {
    public static boolean isNumeric1(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch(Exception e){
            return false;
        }
    }}

这是判断数据类型的方法

XP
XP
© 2025 软件园学生在线
Theme by Wing