列的平均值

时间:2015-10-30 14:46:32

标签: java arrays multidimensional-array

我有一个2D数组。我希望我的循环遍历每一列并添加大于/等于1的所有数字并找到它们的平均值。它遇到小于1的数字时应该停止。

示例数组:

0 1.0071 0.0031 0.0034
1 2.0062 5.8043 0.6967
2 7.0051 1.0089 0.0013
3 0.0033 6.8843 1.0078
4 0.0039 0.0027 3.0032
5 2.0092 1.0094 2.0535
6 9.4469 1.0099 7.0647 

示例输出:

第2栏: 数字0到2的平均值为3.3394。 从5到6的平均值是5.7280。

第3栏: 从1到3的平均值是4.5658。 数字5到6的平均值为1.0096。

第4栏: 数字3到6的平均值为3.2823。

我的代码输出:

4.2949(第2栏的平均值) 4.5658(第3栏的平均值) 3.2823(第4栏的平均值)

到目前为止,这是我的代码:

for (int j = 1; j < arr[0].length; j++) {
    sum = 0;
    count = 0;
    for (int i = 0; i < arr.length; i++) {
       if (data[i][j] >= 1.0) {
          sum += arr[i][j];
          count++;

       }
    }
int i;
if (count!=0){
   for (i=1; i<=1; i++){
       System.out.print(sum/count + "  "); // find avg of entire column
   }
} else {
   System.out.println(0);
}

我只能得到每列中大于/等于1的所有数字的平均值。如何使我的代码在遇到0时停止工作?

2 个答案:

答案 0 :(得分:0)

尝试放

else
    break;

在条件之后。

答案 1 :(得分:0)

请尝试以下代码(我已经测试过):

public static void main(String[] args) {
    double arr[][] = { { 0, 1.0071, 0.0031, 0.0034 }, { 1, 2.0062, 5.8043, 0.6967 }, { 2, 7.0051, 1.0089, 0.0013 },
            { 3, 0.0033, 6.8843, 1.0078 }, { 4, 0.0039, 0.0027, 3.0032 }, { 5, 2.0092, 1.0094, 2.0535 },
            { 6, 9.4469, 1.0099, 7.0647 } };

    for (int j = 1; j < arr[0].length; j++) {
        double sum = 0;
        double count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i][j] >= 1.0) {
                sum += arr[i][j];
                count++;
            } else if(count > 0) {
                System.out.print(sum / count + "  ");
                sum = 0;
                count = 0;
            }
        }
        int i;
        if (count != 0) {
            for (i = 1; i <= 1; i++) {
                System.out.print(sum / count + "  "); // find avg of entire
                                                        // column
            }
        } else {
            System.out.println(0);
        }
    }
}