软件园学生在线

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

登录与注册

后端一 陈斯琦

  • Shiyo
  • 2023-10-25
  • 0

后端第一次例会作业 四则运算

思路构建

主体思路

在service中编写四则运算方法,在controller中进行数据传入,调用方法,数据传出

问题处理

计算无限大小数据

使用BigDecimal类

计算小数

可使用double类型,但可计算数据有限,同上使用BigDEcimal类

判断数据类型是否有误

本想在判断数据类型时捕捉异常进行处理,但是还没学明白,决定先用现有知识处理
设想创建一个方法,先传入一个String类型的数据,将其放入char数组,遍历判断是否有不合法的字符。
若全部为数字,则将输入的String变量转为BigDecimal类型传出;若出现不合法的字符,则利用某方法输出一段文字提示类型错误,但是我不会,网上找不到,可能太基础或太冷门
所以将含有非法字符的字符串定义为数值0

代码

Service代码

import java.math.BigDecimal;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;

@Service
public class ServiceOne {

    //加法
    public BigDecimal add(String a, String b){
        BigDecimal i = StoD(a);
        BigDecimal j = StoD(b);
        return i.add(j);
    }

    //减法
    public BigDecimal sub(String a, String b){
        BigDecimal i = StoD(a);
        BigDecimal j = StoD(b);
        return i.subtract(j);
    }

    //乘法
    public BigDecimal mul(String a, String b){
        BigDecimal i = StoD(a);
        BigDecimal j = StoD(b);
        return i.multiply(j);
    }

    //除法
    public BigDecimal div(String a, String b){
        BigDecimal i = StoD(a);
        BigDecimal j = StoD(b);
        return i.divide(j);
    }

    //判断输入是否为数据
    //若输入非数,则判定其数值为0
    //将输入String类型转为BigDecimal类型来避免数据溢出
    public BigDecimal StoD(String a){
        char[] ar = a.toCharArray(); //char数组
        int t = 0;
        for(int i = 0 ; i < ar.length ; i++){
            if ((ar[i] >= '0' && ar[i] <= '9')) {
            } else {
                t++;
            }
        }
        BigDecimal ax = new BigDecimal(a);
        ax = ax.setScale(2,BigDecimal.ROUND_HALF_UP);
        return ax;
    }

}

Controller代码

import com.example.demo.service.ServiceOne;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.security.Provider;
@RequestMapping("/")
@RestController
public class Controller01 {
@Autowired
    ServiceOne serviceOne;
    //加法方法引导
    @PostMapping("/add")
    public BigDecimal add(@RequestParam String a, @RequestParam String b){
        return serviceOne.add(a, b);
    }

    //减法引导
    @PostMapping("/sub")
    public BigDecimal sub(@RequestParam String a, @RequestParam String b){
        return serviceOne.sub(a, b);
    }

    //乘法引导
    @PostMapping("/mul")
    public BigDecimal mul(@RequestParam String a, @RequestParam String b){
        return serviceOne.mul(a, b);
    }

    //除法引导
    @PostMapping("/div")
    public BigDecimal div(@RequestParam String a, @RequestParam String b){
        return serviceOne.div(a, b);
    }

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