软件园学生在线

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

登录与注册

四则运算

  • 2281612947
  • 2023-10-29
  • 0

后端第一次培训作业

by 骆亚非


使用说明

这是一款部署在本地的springboot为框架的一款无上限的位数的简单四则运算API,写不来前端QWQ
使用说明:四则运算应用程序

以下内容将帮助你了解如何正确地使用这没有实用价值的四则运算应用程序。该应用程序仅仅提供了加法、减法、乘法和除法运算功能以及一些。
加法(plus):
addend1——加数1
addend2——加数1
减法(minus):
minuend——被减数
subtrahend——减数
乘法(multiply):
factor1——乘数1
factor2——乘数2
除法(divide):
dividend——被除数
divisor——除数
setPrecision——保留的小数位数

学习历程

基于神秘的路人学姐手搓的代码为原版,调用了群友说的BigInteger(后基于作业要求改为BIgDecimal)的类。
了解到了:

  1. BIgInteger和BigDecimal作为静态类,都不能简单的用常见的a+b这种方法,要用apple plus(banana)这种调用方法来算。
  2. 在完成“具体要求中 3. 判断数据类型是否有误。例如输入一个String”的任务要求中,controller中反复改动了好几次,最终在人和AI的共同努力之下,从简单的检验到先输入为String再尝试转换为BigDecimal来检验。
  3. 学废了,呜呜

代码上

MainService

package com.example.homework1.service;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Service

public class MainService {

    public BigDecimal plus(BigDecimal addend1, BigDecimal addend2) {
        return addend1.add(addend2);
    }

    public BigDecimal minus(BigDecimal minuend, BigDecimal subtrahend) {
        return minuend.subtract(subtrahend);
    }

    public BigDecimal multiply(BigDecimal factor1, BigDecimal factor2) {
        return factor1.multiply(factor2);
    }

    public BigDecimal divide(BigDecimal dividend, BigDecimal divisor, int setPrecision) {
        //    int setPrecision=5;
        return dividend.divide(divisor, new MathContext(setPrecision, RoundingMode.HALF_EVEN));
    }
}

Maincontroller

package com.example.homework1.controller;

import com.example.homework1.service.MainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

@RestController
@RequestMapping
public class MainController {
    @Autowired
    MainService mainService;

    @RequestMapping(value = "/plus", method = RequestMethod.GET)
    public String plus(@RequestParam("addend1") String addend1Str,
                       @RequestParam("addend2") String addend2Str) {
        try {
            BigDecimal addend1 = new BigDecimal(addend1Str);
            BigDecimal addend2 = new BigDecimal(addend2Str);
            if ((addend1 instanceof BigDecimal) && (addend2 instanceof BigDecimal)) {
                return mainService.plus(addend1, addend2).toString();
            }

        } catch (NumberFormatException e) {
            return "您是卜轩学长吗?\n 您真的检查了我的作业!\n 如此用心QWQ \n 我得哭死 \n 呜呜呜\n …";
        }
        return null;
    }

    @RequestMapping(value = "/minus", method = RequestMethod.GET)
    public String minus(@RequestParam("minuend") String minundStr,
                        @RequestParam("subtrahend") String subtrahendStr) {
        try {
            BigDecimal minuend = new BigDecimal(minundStr);
            BigDecimal subtrahend = new BigDecimal(subtrahendStr);
            if ((minuend instanceof BigDecimal) && (subtrahend instanceof BigDecimal)) {
                return mainService.minus(minuend, subtrahend).toString();
            }
        } catch (NumberFormatException e) {
            return "你不会是神秘学姐派来的吧!\n 不准淘气嘞,减法要用阿拉伯数字且符合小学数学";
        }

        return null;

    }

    @RequestMapping(value = "/multiply", method = RequestMethod.GET)
    public String multiply(@RequestParam("factor1") String factor1Str,
                           @RequestParam("factor2") String factor2Str) {
        try {
            BigDecimal factor1 = new BigDecimal(factor1Str);
            BigDecimal factor2 = new BigDecimal(factor2Str);
            if ((factor1 instanceof BigDecimal) && (factor2 instanceof BigDecimal)) {
                return mainService.multiply(factor1, factor2).toString();
            }
        } catch (NumberFormatException e) {
            return "小可爱请检查以下输入的是否为数字哦!";
        }
        return null;
    }

    @RequestMapping(value = "/divide", method = RequestMethod.GET)

    public String divide(@RequestParam("dividend") String dividendStr,
                         @RequestParam("divisor") String divisorStr,
                         @RequestParam("setPrecision") String setPrecisionStr) {
        try {
            BigDecimal dividend = new BigDecimal(dividendStr);
            BigDecimal divisor = new BigDecimal(divisorStr);
            Integer setPrecision = new Integer(setPrecisionStr);

            if ((dividend instanceof BigDecimal) && (divisor instanceof BigDecimal) && (setPrecision instanceof Integer)) {

                if (!divisor.equals(BigDecimal.ZERO)) {
                    return mainService.divide(dividend, divisor, setPrecision).toString();
                }
                {
                    return "除数不能为0";
                }
            }
        } catch (NumberFormatException e) {
            return "还想使坏,呜呜!\n 这是用阿拉伯数字做计算哦亲!";
        }
        return null;
    }
}

写在后面:
这代码算是写完了,但是对代码的基本语句还是掌握不够,全靠GPT+我哥,感谢他们。

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