软件园学生在线

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

登录与注册

后端一 胡锦玉

  • H
  • 2023-10-29
  • 0

Spring Boot(四则运算)


产品说明


1.产品介绍

  • 首先,这是一个使用Spring Boot写的支持四则运算的API
  • 那么,Spring Boot是什么?它是一个基于Spring框架的快速开发框架,可以简化程序的开发过程和部署流程,简单来说,这是可以让我们以最简单的方式写一个软件程序的工具,就好比说已经给你准备好了所有食材和你需要的厨具,然后你只需要按照自己的想法去做你要完成的菜就可以了
  • 还有,什么是API?简单来说就是程序之间的接口,也举个例子来说的话,就是当我们宿舍的灯坏了的时候,我们是告诉宿管阿姨报修,然后宿管阿姨再联系维修工人,API在这里就担任了宿管阿姨这个中间角色

    2.使用说明

    理解了我们这个产品是什么之后,就要考虑它是如何使用的

  • 因为我们这次不是固定的加或减的一种,所以我们要把我们要运算的数字和运算符号结合起来,但他们又不是同一个数据类型,这就考虑到了调用,也就是结合培训时Course类,我们同样是在Body的raw中输入数字和符号,系统会给我们返回值,就像下面这样
    { "num1" : 10987654.7, "num2" : 1.2, "operator" : "*" }
    我们已经测试过了,这是可以运行的,在Body下面会给出结果
  • 除此之外,只有实数是可以运算的,那么输入字符串的时候会怎么样呢?在测试的过程中,如果你在num后面输入了字符,系统给我们的回复是Bad Request,所以它是会检验你输入的是什么的
  • 还有要考虑到做除法运算时分母是零的情况,要单独列出
  • 最后对于数据溢出的问题,double 所容纳的是64位,已经是最大的了,考虑过String转化成double,但是String因为length是和int对应的,所以String被排除,至于把它放到数组里,也要看我们开的数组是多少位,而且开数组也会占用一定的时间和空间,综合考虑来看,就直接用double了

    学习历程


    1.文档学习

  • 首先,大致的框架是在神秘学姐写的教程和培训时写的Course类的调用来写的,因为在Spring Boot中如果用static的话是表示一些在整个过程中不变的量,而我们所要输入的数字是会变的,所以只能用private来调用数字
  • 之后,开始的时候想的方案在试过之后都被否定了,不管是在RequestParam输入数字之后再返回,还是把数字和运算符分开来写都没成功,在参考CSDN的《用Spring Boot实现一个计算器》之后,把他们放到一块来写,也失败了,因为那个涉及了前端的一点变量,但是也借鉴了一点它的将数字算出之后再改成字符串输出,因为总的方法是放在public String里写的,返回值的数据类型要对应

    2.知识拓展

  • 开始的时候尝试将字符串改成小数,虽然最后去掉了
    double num1 = Double.parseDouble();
    double num1 = Double.valueOf();
    另外将字符串改成整数,可以用
    int a = Integer.parseInt();
    这个是如果你的字符串里面输入的不是数字是会报错的
  • 将小数转化成字符串输出
    String result1 = String.valueOf(result);
  • 尝试的时候在一篇文档里看到有使用ResponseBody的,虽然最后也没用上,它的作用其实是将java对象转为json格式的数据,与你Body里选的什么格式有关

    产品结果

    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    @RestController
    @RequestMapping("/main")
    public class Main {
    @Autowired
    MainService mainService;
    @RequestMapping(value = "/calc", method = RequestMethod.POST)
    public String calculator(@RequestBody MainService mainService) {     //就像上节课写的Course一样,在Body下运行
        double result = 0;    //先定义一个result得到结果,再将结果转化成字符串,因为数据类型不对应
        if (mainService.getOperator() == '+'){
            result = mainService.getNum1() + mainService.getNum2();
        }
        if (mainService.getOperator() == '-') {
            result = mainService.getNum1() - mainService.getNum2();
        }
        if (mainService.getOperator() == '*') {
            result = mainService.getNum1() * mainService.getNum2();
        }
        if (mainService.getOperator() == '/'){
            if (mainService.getNum2() != 0) {
                result = mainService.getNum1() / mainService.getNum2();
            }else {
                return "除法运算时分母不能为零";
            }
        }
        String result1 = String.valueOf(result);    //将得到的小数转化成字符串输出,与上面的public String相对应
       return result1;
    }
    }
    Service类的
    package com.example.springboot.controller;
    import lombok.*;
    import org.springframework.stereotype.Service;
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Setter
    @Getter
    @Service
    public class MainService {
    private Double num1;
    private Double num2;
    private Character operator;
    }   //有的可能没有用上
    Postman的Body里的raw写
    {
    "num1" : 10987654.7,
    "num2" : 0,
    "operator" : "/"
    }    //冒号后面的可以换
H
H
© 2025 软件园学生在线
Theme by Wing