无论num1,num2还是num3的输入,总得分总是等于0.0

时间:2017-04-22 03:32:23

标签: java java.util.scanner

这句话有什么问题?它总是输出0.0而不是总得分结果

import java.util.Scanner;

public class d {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int num1;
        int num2;
        int num3;
        int percentnum1;
        int percentnum2;
        int percentnum3;
        double totalscore;

        System.out.print("Enter paper 1 score (out of 90): ");
        num1 = input.nextInt();

        System.out.print("Enter paper 2 score (out of 90): ");
        num2 = input.nextInt();

        System.out.print("Enter IA score (out of 20): ");
        num3 = input.nextInt();

        percentnum1 = (num1 / 90) * 100;
        percentnum2 = (num2 / 90) * 100;
        percentnum3 = (num3 / 20) * 80;

        totalscore = (percentnum1 * 0.4) + (percentnum2 * 0.4) + (percentnum3 * 0.2);

        System.out.println("The total score is " + totalscore);


    }
}

3 个答案:

答案 0 :(得分:0)

似乎下面的代码导致了问题:

percentnum1 = (num1 / 90) * 100;
percentnum2 = (num2 / 90) * 100;
percentnum3 = (num3 / 20) * 80;

如果num1的{​​strong>全部,num2num3的值小于其分母,则结果(totalscore)将为{{1因为整数除法,即使某些变量是0.090/90而其他变量小于它的分母,你会再次得到错误的结果,并且由于整数除法(虽然这次不一定是20/20)。

解决方案是简单地使用0.0类型来保持精确度。

double

答案 1 :(得分:0)

int更改为double to avoid rounding down to 0

答案 2 :(得分:0)

如果您想使用import java.util.logging.*;类型,可以先将数字相乘。希望它有所帮助。

int