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

Java绩点转换程序问题:如何输出绩点数值而非字母等级

字母成绩转绩点程序修正方案

问题概述

现有Java代码用于将字母成绩(如A、B+等)转换为对应绩点,但存在两处不符合需求的问题:

  • 调用qualityPoint方法后,输出的是输入的字母等级而非方法返回的绩点数值
  • 无效输入的异常提示文本错误,需要改为“Invalid grade”

同时原代码存在一个隐藏问题:绩点使用int类型会丢失小数精度(例如A对应的3.75会被截断为3),需要一并修正。

修正后的代码

import java.util.*;

public class Lab17 {
    public static double qualityPoint(String alpha) {
        if (alpha.equals("A+"))
            return 4.0;
        else if (alpha.equals("A"))
            return 3.75;
        else if (alpha.equals("B+"))
            return 3.5;
        else if (alpha.equals("B"))
            return 3.0;
        else if (alpha.equals("C+"))
            return 2.5;
        else if (alpha.equals("C"))
            return 2.0;
        else if (alpha.equals("D+"))
            return 1.5;
        else if (alpha.equals("D"))
            return 1.0;
        else if (alpha.equals("F"))
            return 0.0;
        else
            throw new InputMismatchException("Invalid grade");
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a letter grade: ");
        String alpha = sc.next();
        try {
            double res = qualityPoint(alpha);
            System.out.println("The quality points: " + res);
        } catch (InputMismatchException ex) {
            System.out.println(ex.getMessage());
        }
        sc.close();
    }
}

修改说明

  1. 修正绩点精度问题:将qualityPoint方法的返回类型从int改为double,移除所有强制转换为int的操作,保留正确的小数绩点数值
  2. 输出正确结果:修改main方法中的输出语句,将原本输出的字母等级alpha替换为计算得到的绩点res
  3. 修正异常提示:在catch块中直接输出异常携带的自定义信息ex.getMessage(),确保无效输入时显示“Invalid grade”
  4. 优化代码细节:移除无关的import javax.lang.model.util.ElementScanner14;语句,添加sc.close()关闭Scanner资源避免泄漏

测试示例

  • 输入A时,输出:The quality points: 3.75
  • 输入x时,输出:Invalid grade

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:45:55