我有一个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时停止工作?
答案 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);
}
}
}