Ich möchte den Zeilensummendurchschnitt herausfinden, aber wenn Null in der Zeile erscheint, dann sollte diese bestimmte Spalte übrig bleiben, wenn der Durchschnitt der Zeile erledigt ist. lass es klarer sein. Ich habe eine Matrix sagenZeilensummendurchschnitt: Elemente scheinen im Vergleich 0 zu sein
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
Reihensumme Durchschnitt für die erste Zeile sollte 16/4 statt 16/5 sein, weil wir Zeile 1, Spalte 5 nach links, da es Wert „0“
enthält ich versuche folgender Code für die erste Reihe funktioniert es gut, aber für den Rest jede Reihe 2-5 und jede Spalte 5 lässt den Wert, obwohl es nicht Null ist.
mein Code:
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]);
}
Ausgabe des Programms i erhalten ist:
sums of the columns
4.0
3.0
4.75
4.0
3.5
i die Ausgabe wollen als:
4.0
2.4
3.8
3.2
2.8
bitte leite mich, wo ich tue falsch
finden mit In jeder Zeile deines Arrays suchst du immer nach 'hostMatrix [j] == 0 'in der' if'-Bedingung und wenn 'j = 4', natürlich 'hostMatrix [4] == 0' in deinem Array . Sie können die Antwort von 'nhouser9' unten versuchen, um zu reparieren, oder einfach' if (hostMatrix [j] == 0) 'zu' if (hostMatrix [i * cols + j] == 0) 'zu ändern. –