软件园学生在线

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

登录与注册

后端一 宋俊儒(四则运算)

  • 202300300005
  • 2023-10-29
  • 0

后端一四则运算

(时间可能有点久了)

产品说明

1.这是使用Spring boot写的一个支持四则运算的API,可以完成加减乘除四种运算
2.特殊情况:输入的数据类型错误、数据溢出(这两个在学习经历中提到)、分母不为0,分母的问题先使用charAt(0)得到第一个数,再用if判断。

学习经历

1.首先模仿神秘学姐手搓代码,完成相应的注解和接口
2.重点是解决数据溢出和判断数据类型
我在弄清楚这两个要求上花费时间较多。灵感来源于这一周的Java课上,老师讲到字符也可以比大小,我突然想到可以通过让每一字符>='0'&& <='9'来实现判断数据类型,至于解决数据溢出,我得到了神秘学姐的友情提醒,用BigDecimal类。

代码和相应注释如下

MainController

package com.example.controller;
import com.example.service.MainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
@RestController
@RequestMapping("/")
public class MainController {
    @Autowired
    MainService mainService;
    // 加法
    @PostMapping("/add")
    public BigDecimal add(@RequestBody String a, String b){
        // 下面判断数据类型,调用写好的方法,其他的运算同理,比较占位置,就不一一写上了
        while(true){
            if(!(MainService.tochar_a(a) == null&& MainService.tochar_b(b) == null))
                break;
        }
        return mainService.add(a , b);
    }
    // 减法
    @PostMapping("/minus")
    public BigDecimal minus(@RequestParam String a, String b){
        return mainService.minus(a , b);
    }
    // 乘法
    @PostMapping("/mul")
    public BigDecimal mul(@RequestParam String a, String b){
        return mainService.mul(a , b);
    }
    // 除法
    @PostMapping("/div")
    public BigDecimal div(@RequestParam String a, String b){
        // 定义一个big,当分母为0时,返回big
        BigDecimal big = new BigDecimal(1);
        // 下面是判断分母不为0,判断字符串的第一位是否为0
        // 如果是0,则不用看后面的值,如果不是0,再判断后面的数据类型
        char c = b.charAt(0);
        if(c == 48) {
            return big;
        }
        else
            return mainService.div(a, b);
    }
}

MainService

package com.example.service;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Service
public class MainService {
    // 为了解决数据溢出,四则运算不采用有上限值的int类型
    // 而采用可以无限大的BigDecimal类,调用里面的四则运算的方法,所以需要输入的是一个String类型
    // 减法方法
    public BigDecimal minus(String a,String b){
        BigDecimal front = new BigDecimal(a);
        BigDecimal back = new BigDecimal(b);
        return front.subtract(back);
    }
    // 加法方法
    public BigDecimal add(String a,String b){
        BigDecimal front = new BigDecimal(a);
        BigDecimal back = new BigDecimal(b);
        return front.add(back);
    }
    // 乘法方法
    public BigDecimal mul(String a,String b){
        BigDecimal front = new BigDecimal(a);
        BigDecimal back = new BigDecimal(b);
        return front.multiply(back);
    }
    // 除法方法
    public BigDecimal div(String a,String b){
            BigDecimal front = new BigDecimal(a);
            BigDecimal back = new BigDecimal(b);
            return front.divide(back);

    }
    // 判断数据类型,只能是数字。运用字符串的比较大小原理,界于'0'和'9'之间
    // 如果不是纯数字,返回空,是纯数字,正常返回
    public static char[] tochar_a(String a) {
        char[] array = a.toCharArray();
        char[] arr = new char[0];
        boolean bl = false;
        for (int i = 0; i <a>= '0' && array[i] <= '9')
                bl = true;
            else {
                bl = false;
                break;
            }
        }
        if (bl)
            return array;
        else
            return arr;
    }
    public static char[] tochar_b(String b) {
        char[] array = b.toCharArray();
        char[] arr = new char[0];
        boolean bl = false;
        for (int i = 0; i <b>= '0' && array[i] <= '9')
                bl = true;
            else {
                bl = false;
                break;
            }
        }
        if (bl)
            return array;
        else
            return arr;
    }
}
202300300005
202300300005
© 2025 软件园学生在线
Theme by Wing