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

录入各科目成绩后如何正确实现4科平均分计算(附Java代码)

Java Swing 平均分计算功能逻辑修复

问题原因

现有jButton4按钮的点击事件逻辑存在两处明显问题:

  • 计算逻辑错误:受算术运算符优先级影响,除法/优先级高于加法+,当前代码仅对最后一门科目的成绩做了除以4的运算,最终得到的是「前三科成绩之和 + 第四科成绩/4」的错误结果,并非四科总分除以4的正确平均分
  • 展示逻辑遗漏:现有if判断只覆盖了≥90、78-79、74-75三个极窄的分数区间,其余分数段的计算结果不会被写入平均分展示控件,用户看不到计算结果

原有错误实现代码如下:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       
    double grades;
    grades= Double.parseDouble(comprogGrds .getText())+Double.parseDouble (dsGrds .getText())+ Double.parseDouble (cwGrds.getText())+ Double.parseDouble(multGrds.getText())/4;
        
    if(grades>=90){
        average.setText(Double.toString(grades));
    }else if(grades>=78 && grades<=79){
      average.setText(Double.toString(grades));
    }else if(grades>=74 && grades <=75){
       average.setText(Double.toString(grades));
    }
                
}

修复方法

  • 用小括号包裹四科成绩的求和逻辑,强制优先计算总分,再执行除以4的平均分运算,从语法层面规避运算符优先级带来的计算错误
  • 删除冗余且有遗漏的分数区间判断,只要成绩计算完成就直接写入展示控件,避免出现分数算出来但不显示的问题
  • 可选增加输入合法性校验,捕获用户输入非数字内容时抛出的格式转换异常,避免程序直接崩溃

修复后的可运行代码:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {  
    try {
        // 优先计算四科总分,再除以4得到正确平均分
        double total = Double.parseDouble(comprogGrds.getText())
                + Double.parseDouble(dsGrds.getText())
                + Double.parseDouble(cwGrds.getText())
                + Double.parseDouble(multGrds.getText());
        double avg = total / 4;
        // 直接展示计算得到的平均分
        average.setText(String.valueOf(avg));
        
        // 如果需要根据平均分做等级判定,可在此处追加逻辑,不影响平均分展示
    } catch (NumberFormatException ex) {
        average.setText("成绩输入不合法,请输入数字");
    }
}

写算术表达式时,如果涉及多种运算符混合运算,不需要硬背优先级表,直接用小括号明确标注运算顺序,是出错率最低的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:45:33