一.产品说明:一.产品说明:
1.产品使用:在postman中输入正确网址并赋值后使用
2.所考虑的特殊情况:2.所考虑的特殊情况:
(1).考虑到输入的第二个数会作为运算符后的数,若为负数会让产生问题,所以进行了正负数的判断,若为负数则两数均乘-1即可
(2).为了避免数据溢出,我在进行完基础开发后将所有的数据类型换成了BigDecimal,可以存放无穷位小数
(3).关于数据类型的出错,我本来想通过判断数据的运行类型,即使用instanceof来解决,后来发现输入不合规的数据会报400错误,网页直接报错,这个问题也就不了了之了
(4).本来还想着如果除数为0程序会异常什么的,发现输出后为无穷
(5).本来想在网页中加入超链接来免去输入网址的麻烦,但是因为自己没办法创建中间网页来容纳超链接,无法在进入计算页面后再输入数据,搜索到的解决方法也不尽人意.
二.学习历程:
1.首先当然是学长在例会上的授课,阅读后端发的培训文档进行学习,了解到了主控制器,网址规定等网址设计信息
2.在开发过程中运用到了BigDecimal,第一次用直接把程序搞崩了,最后有惊无险的成功,关于自己使用时遇到的一些问题,在此总结一下:
(1).BigDecimal的方法中添加的参数也要为BigDecimal类型,不然编译不通过
(2).BigDecimal不再使用+-*/的运算符,需要使用特定的方法才可以进行运算
Controller:
package com.example.zuoye;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
@RestController
public class Controller {
@Autowired
MainService mainService;
//四则运算
@PostMapping("add")
public BigDecimal add(@RequestParam BigDecimal a, @RequestParam BigDecimal b){
return mainService.add(a,b);
}
@PostMapping("reduce")
public BigDecimal reduce(@RequestParam BigDecimal a,@RequestParam BigDecimal b){
return mainService.reduce(a,b);
}
@PostMapping("mutiply")
public BigDecimal mutiply(@RequestParam BigDecimal a,@RequestParam BigDecimal b){
return mainService.mutiply(a,b);
}
@PostMapping("div")
public BigDecimal div(@RequestParam BigDecimal a,@RequestParam BigDecimal b){
return mainService.div(a,b);
}
}
Service:
package com.example.zuoye;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Service
public class MainService {
//若b为负数,则*-1切换正负号
public void change(BigDecimal a, BigDecimal b){
BigDecimal b1 = new BigDecimal(0);
BigDecimal b2 = new BigDecimal(-1);
if(b.compareTo(b1) == -1){
a = a.multiply(b2);
b = b.multiply(b2);
}
}
public BigDecimal add(BigDecimal a,BigDecimal b){
this.change(a,b);
return a.add(b);
}
public BigDecimal reduce(BigDecimal a,BigDecimal b){
this.change(a,b);
return a.subtract(b);
}
public BigDecimal mutiply(BigDecimal a,BigDecimal b){
this.change(a,b);
return a.multiply(b);
}
public BigDecimal div(BigDecimal a,BigDecimal b){
this.change(a,b);
return a.divide(b);
}
}