【问题标题】:Java GPA calculatorJava GPA 计算器
【发布时间】:2013-09-12 07:32:37
【问题描述】:

我的 Main 类中有这段代码。我的问题是,当 GPA 是用总除以类计算时。它没有给我完整的数字。 EX 如果总数是 14 并且类是 4 它是 3.5,我的代码只给我一个 3.0。有谁知道为什么,非常感谢您的帮助!

Scanner input = new Scanner(System.in);
    System.out.print("How many classes did you have?: ");
    int classes = input.nextInt();
    String grades = "";
    int total = 0;
    int dec;



    for (int j = 0; j < classes; j++) {

        Scanner inputters = new Scanner(System.in);
        System.out.print("What is your Grade?: ");
        grades = inputters.nextLine();


        if (grades.equals("A")){
        dec = 4; 
        total += dec;

    } else if (grades.equals("B")){
        dec = 3;
        total += dec;

    } else if (grades.equals("C")){
        dec = 2;
        total += dec;

    } else if (grades.equals("D")){
        dec = 1;
        total += dec;

    } else if (grades.equals("F")){
        dec = 0;
        total += dec;

    }

    }


    double GPA = total / classes;
    System.out.println(GPA);

    DecimalFormat formatter = new DecimalFormat("0.##");
    System.out.println( formatter.format(GPA));

【问题讨论】:

    标签: java calculator


    【解决方案1】:

    这是因为您将 int 除以 int,这永远不会产生浮点数。将总/类的类型更改为双倍(或强制转换),GPA 将是您期望的数字。

    PS:并不是说双打并不准确,例如,0.9 + 0.1 != 1.0。如果您想进行“正确”的双重计算,请使用 BigDecimal,并在使用时使用 String 构造函数。

    【讨论】:

    • 我认为使用 BigDecimal 不适合包含小于 4 的正值...
    • 感谢您的帮助!我不敢相信我没有发现那个错误。该睡觉了,哈哈。
    • 我知道这是旧的,但@s.ts 你愿意解释一下原因吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多