产品使用
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;
}
}}
这是判断数据类型的方法