/ / Obliczanie sumy elementów w tablicy - java, tablice

Obliczanie sumy elementów w tablicy - java, tablice

mam klasę Mold z następującym konstruktorem

public Mold(int[][] mold){
this.mold = mold;
}

Też mam metodę sum() który wygląda tak:

public int sum(){
int sum = 0;
for( int i = 0; i <matrix.length; i++) {
sum += matrix[i][i];
}
return sum;
}

Co próbuję zrobić, to obliczyć sumę wszystkich elementów w Mold ale nie mam pewności co do tego, co włożyć sum += matrix[i][i]; część zamiast "i". Być może robię to zupełnie niewłaściwie. Utknąłem na tym przez jakiś czas i nie mogę tego zrozumieć.

Przykładem wyjścia, które chciałbym uzyskać, jest: int[][] test1 = { { 10, 5 }, { 2, 8 } }; powinien dać 25 sposób, w jaki zastosowano metodę sumy.

Gdyby ktoś popchnął mnie we właściwym kierunku, byłoby wspaniale! Wielkie dzięki,

Odpowiedzi:

2 dla odpowiedzi № 1

Robisz to:

Przypuśćmy, że dwuwymiarowa tablica elementów 3x3 to ich współrzędne (wiersz, kolumna):

[0,0][0,1][0,2]
[1,0][1,1][1,2]
[2,0][2,1][2,2]

Sposób, w jaki liczą się za pomocą tylko jednej pętli i tylko jedna zmienna w pętli, to:

i = 0 (licząc elemenów 0,0)

[*][ ][ ]
[ ][ ][ ]
[ ][ ][ ]

i = 1 (wliczając w to elemen 1, 1)

[ ][ ][ ]
[ ][*][ ]
[ ][ ][ ]

i = 2 (licząc elemenów 2,2)

[ ][ ][ ]
[ ][ ][ ]
[ ][ ][*]

Aby wykonać tę sumę, musisz użyć podwójnej pętli. Pętla w każdym wierszu i dla każdego wiersza zapętlonego musisz pętli dla każdej kolumny tego wiersza.

Coś takiego:

for (i = 0; i < maxRows; i++){
for (j = 0; j < maxCols; j++{
//
}
}

1 dla odpowiedzi nr 2

W ten sposób podsumujesz tylko pozycje [0][0], [1][1], [2][2], ..., [i][i] a będziesz tęsknił za większością elementów.

Masz 2 wymiary w swojej tablicy, więc potrzebujesz 2 pętli.

Utwórz kolejny for pętla wewnątrz twojego istniejącego for pętli, z inną zmienną pętli, j. Zatrzyma się, gdy dojdzie do końca aktualnej długości wiersza: matrix[i].length. Podczas dodawania do sum, użyj obu zmiennych pętli: matrix[i][j].


1 dla odpowiedzi nr 3

W twoim obecnym podejściu dodajesz tylko elementy po przekątnej (0,0), (1,1), (2,2). Jeśli obsługujesz tablicę tablic, możesz użyć ulepszony for pętla dwa razy: jeden do zapętlenia elementów w tablicy, a drugi do zapętlenia elementów w tablicy tablicy:

int sum = 0;
for(int[] moldElement : mold) {
for(int element : moldElement) {
sum += element;
}
}
return sum;

1 dla odpowiedzi nr 4

Zastanów się, co dokładnie robisz i jak to osiągnąć.

Pamiętaj, że tablica 2d to tablica tablic.

for( int i = 0; i <matrix.length; i++) {
sum += matrix[i][i];
}

`sum[i][i]` in this code is essentially doing this.
0  0
1  1
2  2
3  3
4  4
...

To, czego potrzebujesz, to zrobić

     0   0
0   1
0   2
...
1   0
1   1
1   2
...

Pomyśl o tym jak o współrzędnych X i Y!

to byłaby twoja odpowiedź.

for(int i = 0; i < matrix.length; i++){
for(int j = 0; z < matrix[j].length; j++{
sum += matrix[i][j];
}
}

Zwróć szczególną uwagę na tę linię. matrix[i].length Co jeśli tablica nie była całkowicie jednolita?

na przykład.

  i
j[0][][][][][]
[1][]
[2][][][]
[3][][][][][][]

to wciąż byłoby w stanie powtórzyć.


0 dla odpowiedzi № 5

zrobić podwójne dla pętli.

int sum = 0;
for(int i = 0; i < matrix.length; i++)
{
for(int j = 0; j < matrix[0].length; j++)
{
sum += matrix[i][j];
}
}
return sum;

0 dla odpowiedzi № 6

Zagnieżdż pętlę for

 public int sum(){
int sum = 0;
for( int i = 0; i <matrix.length; i++) {
for (int j = 0; k < matrix[i].length; j++){
sum += matrix[i][j];
}
}
return sum;
}

Jak ktoś powiedział, jesteś tylko iteracją nad jednym wymiarem tablicy. Gdy masz n wymiarów tablicy, potrzebujesz n pętli.