我想找出行總和的平均值,但是如果行中出現零,那麼當該行的平均值完成時應該保留該特定列。讓它更清楚。我有一個矩陣說行平均值:元素在比較時似乎爲零
5 3 4 4 0
3 1 2 3 3
4 3 4 3 5
3 3 1 5 4
1 5 5 2 1
行總的平均第一行應該是16/4,而不是16/5,因爲我們離開第1行5列,因爲它含有「0」值
我試圖以下代碼。對於第一行它的工作正常,但對於其餘的每一行2-5行,並且每一列5將其值留下,儘管其不爲零。
我的代碼是:我接受該計劃
int rows = 5;
int cols = 5;
float hostMatrix[] = createExampleMatrix(rows, cols);
System.out.println("Input matrix:");
System.out.println(createString2D(hostMatrix, rows, cols));
float sums[] = new float[rows];
for(int i=0;i<rows;i++){
float sum = 0,counter=0;
for(int j=0;j<cols;j++){
if(hostMatrix[j]==0){
sum += hostMatrix[i * cols + j];
}
else
{
sum += hostMatrix[i * cols + j];
counter++;
}
}
sum=sum/counter;
sums[i] = sum;
}
System.out.println("sums of the columns ");
for(int i=0;i<rows;i++){
System.out.println(" "+sums[i]);
}
輸出爲:
sums of the columns
4.0
3.0
4.75
4.0
3.5
我想作爲輸出:
4.0
2.4
3.8
3.2
2.8
請指導我在哪裏,我在做什麼錯誤
隨着你陣列中的每一行,你總是在'if'的條件中檢查'hostMatrix [j] == 0',當'j = 4',當然''hostMatrix [4] == 0'在你的數組中。你可以嘗試下面的'nhouser9'的回答來修正,或者簡單地把if(hostMatrix [j] == 0)'改成'if(hostMatrix [i * cols + j] == 0)'。 –