You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Spring Boot Service层无法访问Student对象计算GPA问题求助

存在的问题

  • Student类的成绩是独立的私有属性,并非集合类型,不存在size属性和get(i)方法,无法直接对Student对象循环取值
  • StudentService的submitGrades方法自行创建了空的Student对象,没有接收页面提交的成绩数据,计算逻辑和用户输入完全脱节
  • Controller层的提交接口没有调用Service层的计算逻辑,也没有将计算结果传递给结果页面

修正方案

1. 调整StudentService代码

package com.Beispiel.math.student;

import org.springframework.stereotype.Component;

@Component
public class StudentService {
    // 接收前端传入的Student对象作为入参
    public double calculateGpa(Student student){
        // 将四个成绩存入数组,即可实现循环遍历
        double[] grades = {
                student.getMathGrade(),
                student.getGermanGrade(),
                student.getEnglishGrade(),
                student.getCodeGrade()
        };
        double sum = 0.0;
        // 循环累加成绩
        for (int i = 0; i < grades.length; i++) {
            sum += grades[i];
        }
        // 总分除以课程数得到GPA
        return sum / grades.length;
    }
}

2. 修正StudentController的提交接口

@PostMapping("/register")
public String submitGrades(@ModelAttribute("student") Student student, Model model){
    log.trace(String.valueOf(student));
    // 调用Service层计算GPA
    double gpa = studentService.calculateGpa(student);
    // 将GPA存入Model传递给结果页
    model.addAttribute("gpa", gpa);
    return "register_success";
}

3. 结果页新增GPA展示(可选)

在register_success.html的成绩展示区域新增如下代码,即可显示计算得到的GPA:

<span>计算得到的GPA :</span><span th:text="${gpa}"></span>

内容的提问来源于stack exchange,提问作者duki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:45:02