软件园学生在线

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

登录与注册

【后端一】 王睿宁

  • wrn
  • 2022-10-14
  • 0

四则运算项目介绍

1. 如何使用?

首先在文本框中输入变量a和b的值,再从下方选择加法或减法或乘法或除法,再点击计算即可进行相应的运算.

2. 考虑了哪些特殊情况?怎么处理的?

(1)制作简易前端: 在src/main/resources/static中新建一个index.html,再从文件中编写相应的前端代码

(2)升级到实数的四则运算:借助BigDecimal类进行精确计算

(3)判断数据是否溢出:不太懂,但好像通过BigDecimal进行计算不会溢出

(4)判断数据类型是否有误:还没实现,我目前有两个想法,一是代码运行前用if语句判断数据类型是否正确,二是使用try语句.

(5)防御注入攻击:貌似我的代码不会受到注入攻击,因为我的代码实现的是对参数直接赋值,所以若输入框留空的话变量值就为空,但在url中仍存在这个值为空的变量,所以再点击计算按钮就无法访问到正确的网址.

3. 学习历程

(1)html的一些基本知识(文本框,from表单等)

(2)BigDecimal的一些知识(不懂但大致会用了)

4.代码

src/main/java/com/example/demo/controller/main.java:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.InputMismatchException;

@RestController
public class main {
    //默认除法运算精度
    private static final int DEF_DIV_SCALE = 10;

    @GetMapping("/add")
    public static String add(double a, double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.add(b2).toString();
    }
    @GetMapping("/subtract")
    public static double sub(double a, double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.subtract(b2).doubleValue();
    }
    @GetMapping("/multiplication")
    public static double mul(double a, double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.multiply(b2).doubleValue();
    }
    @GetMapping("/division")
    private static double div(double a, double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.divide(b2,DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
}

src/main/resources/static/index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>四则运算</title>
</head>
<body>
<form action = "http://localhost:8080/">
    <div>a:</div>
    <input type="text" name=a />
    <div>b:</div>
    <input type="text" name=b />
    <br>
    <p>
        <input type="radio" onclick="this.form.action = 'http://localhost:8080/add'"name="count">加法
        <input type="radio" onclick="this.form.action = 'http://localhost:8080/subtract'"name="count">减法
        <input type="radio" onclick="this.form.action = 'http://localhost:8080/multiplication'"name="count">乘法
        <input type="radio" onclick="this.form.action = 'http://localhost:8080/division'"name="count">除法
    </p>
    <button type="submit">计算</button>
</form>
</body>
</html>  
wrn
wrn
© 2025 软件园学生在线
Theme by Wing