Java:将整数除以double是行不通的

时间:2013-10-12 17:57:57

标签: java

public class SumAndAverage {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum = 0;
        int num;
        for(num = 0; num <= 100; num++){ 
            sum += num; 
        }

        double average = ((double)sum) / num;
        System.out.println("The sum is " + sum);
        System.out.println("The average is " + average);

    }
}

结果:

总和是5050 平均值为50.0

出了什么问题:

5050/100 = 50.5 不 50.0

3 个答案:

答案 0 :(得分:6)

此循环结束时

for(num = 0; num <= 100; num++){ 

num101,而不是100。因为发生的情况是测试条件直到它为假,并且这发生在num>100

答案 1 :(得分:0)

你弄错了。当你不使用变量作为循环检查时(以及当你通常使用魔法数字反模式)时会发生这种情况 - 并在以后重用它们。这样你就可以确定你将实际使用什么价值。

public class SumAndAverage {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum = 0;
        int num;
        int max = 100;
        for(num = 0; num <= max; num++){ 
            sum += num; 
        }

        double average = ((double)sum) / max;
        System.out.println("The sum is " + sum);
        System.out.println("The average is " + average);

    }
}

你的数字等于101,而不是100 ......

答案 2 :(得分:0)

当循环出现时,变量num将为101。因此,您需要手动减去一个或更少,可以更好地完成相同的工作,减少一次迭代

for(num = 0; num < 100; ){ 
    sum += ++num; 
}

完整计划

public class SumAndAverage {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int sum = 0;
    int num;
    for(num = 0; num < 100; ){ 
        sum += ++num; 
    }

    double average = ((double)sum) / num;
    System.out.println("The sum is " + sum);
    System.out.println("The average is " + average);
}
}

检查一下。