麻烦铸造整数加倍

时间:2012-12-11 05:33:07

标签: java casting integer double

我正在尝试让这个程序调用函数arrayAvg,其数组为{1,2},并返回平均值的两倍(即1.5)。

这就是我的代码目前的样子。有人知道我哪里错了吗? :X

import java.util.*;

public class Main
{
    public static double arrayAvg(int[] array){

        int total = 0;
        int count = 1;
        double average = 0.0;

        for(int item : array){
            total=total+item;count=count+1;
        }
        double dTotal = (double)total;
        double dCount = (double)count;
        average = (dTotal/dCount);
        return average;
    }

    public static void main(String args[]){

        int[] input = {1,2};
        double result = arrayAvg(input);
        System.out.println(result);
    }
}

4 个答案:

答案 0 :(得分:2)

计数为0而不是1

答案 1 :(得分:1)

您确定count的逻辑是错误的。它应该从0开始而不是1.

另外,你可以简单地获得数组长度。

答案 2 :(得分:1)

为什么需要数数?你需要在数组中基本上需要数量的值来划分它。 只需使用arry.length,这将返回数组中元素的数量并将其用于除法

int len = array.length;
double dTotal = (double) total;
double dCount = (double) len;
average = (dTotal / dCount);
return average;

答案 3 :(得分:0)

实际上你的逻辑存在问题, 你已经初始化了

int count = 1;

这是错的, 你应该将该变量初始化为0,如下所示

int count = 0;

以下是更改代码

public class Main {
    public static double arrayAvg(int[] array) {
        int total = 0;
        int count = 0;
        double average = 0.0;
        for (int item : array) {
            total = total + item;
            count = count + 1;
        }
        double dTotal = (double) total;
        double dCount = (double) count;
        average = (dTotal / dCount);
        return average;
    }

    public static void main(String args[]) {
        int[] input = { 1, 2 };
        double result = arrayAvg(input);
        System.out.println(result);
    }
}

<强>输出

1.5