我有二维数组,我也需要计算每行的平均值和标准偏差并将其存储在适当的位置。我已经写了代码,但它仍然给我错误的结果,没有给出预期值的正确答案。任何人都可以帮助我,也许我的代码是错的,但我不知道如何纠正它。这是数组
这是代码本身:
public void analyze(String[][] arr) {
double res = 0.0;
double avg = 0;
double variance = 0;
double SD;
double Q = 0;
int index = 0;
for (int i = 1; i < (arr.length); i++) {
for (int j = 1; j < (arr[i].length); j++) {
res = res + Integer.parseInt(arr[i][j]);
}
avg = res / (arr[i].length - 1);
System.out.print("arr[i].length: " + arr[i].length + "\t");
System.out.println("Average is " + avg);
/*
double v = Q + (arr.length - avg) * (arr.length - avg);
variance = Q / (arr.length - 1);
SD = Math.sqrt(variance);
System.out.println("average is " + avg);
System.out.println("SD");
double nums[] = { 1.0, 2.3, 3.4, 4.5, 40.5 };
double result = 0.0;
for (i = 0; i < nums.length; i++) {
result = result + nums[i];
}
System.out.println("Average is =" + result / nums.length);
*/
}
}
答案 0 :(得分:1)
您可以在for
上启动两个1
循环。数组在Java中为零索引。这会导致您完全错过第一行和后续每一行中的第一列。
更改
for(int i=1; i<(arr.length);i++){
for(int j=1;j<(arr[i].length);j++){
res = res+Integer.parseInt(arr[i][j]);
}
到
for(int i=0; i<(arr.length);i++){
for(int j=0;j<(arr[i].length);j++){
res = res+Integer.parseInt(arr[i][j]);
}
答案 1 :(得分:1)
您错过了Q
的计算。并且您需要在外循环的每次迭代之间重置计算变量。