
.coma. [ Pretorianin ]
program w javie
Troche godzina nie stosowna, ale niestety potrzebuje tego na jutro, a już wymiekam. Może jest ktos, kto w przeciwienstwie do mnie logicznie mysli i powie, czemu wartosci elemantów macierzy sie nie zapamietuja?
public class Macierz
‹
public int macierz [][] = new int [3][3];
public int a11, a12, a13, a21, a22, a23, a31, a32, a33, suma;
public void przypisanie (int a11, int a12, int a13, int a21, int a22, int a23, int a31, int a32, int a33)
‹
macierz[0][0]=a11;
macierz[0][1]=a12;
macierz[0][2]=a13;
macierz[1][0]=a21;
macierz[1][1]=a22;
macierz[1][2]=a23;
macierz[2][0]=a31;
macierz[2][1]=a32;
macierz[2][2]=a33;
›
public void wypisz ()
‹
for(int i=0; i<3; i++)
‹
for(int j=0; j<3; j++)
‹
System.out.println(macierz [j]);
›
›
›
public int suma ()
‹
int suma=0;
for(int i=0; i<3; i++)
‹
for(int j=0; j<3; j++)
suma+=this.macierz[j];
›
return suma;
›
›
.coma. [ Pretorianin ]
zamiast < powinny być nawiasy klamrowe, a tam gdzie pisze macierz[j] powinno byc macierz |i| [j], niewiem czemu gol to zmiania...
wysiak [ Generaďż˝ ]
"czemu wartosci elemantów macierzy sie nie zapamietuja?"
To znaczy?
I co ten program wlasciwie ma robic, bo na razie to nic nie robi? 'przypisanie' nie jest nigdzie uzyte, 'wypisz' drukuje 'macierz[j]', a powinno 'macierz[i][j]', podobnie jak 'suma'..
[i] robi italica na forum, dlatego jest wycinane.
Sprobuj zadeklarowac
public static int macierz(...)
.coma. [ Pretorianin ]
chodzi o to, zeby policzyc sume elematów macierzy powstałej z wprowadzonych wartosci elementów. Niby wyswiatlaja sie wartości które sie wpisze, tyle tylko że suma cały czas jest zero...
wysiak [ Generaďż˝ ]
"suma cały czas jest zero" - czyli kiedy? I po co jest tam this.?
.coma. [ Pretorianin ]
this po to, ze próbuje po kolei wszytskiego
odnosnie sumy, to po wykonaniu metody przypisanie, w podgladzie wartosci nadal wynosza zero

jiser [ generał-major Zajcef ]
:D
Nie dziala, boś pewnie kolego przedobrzyl :)
Wielokrotnie deklarujesz zmienne o tych samych nazwach - raz dla klasy, raz dla kontekstu.
Przykład: zadeklarowałeś publiczna zmienna klasy "suma". Ale w metodzie suma deklarujesz kolejna zmienna o nazwie "suma" tym razem lokalna (int suma=0;). Zmienna lokalna ginie wraz z koncem kontekstu (w tym przypadku metody). Owa metoda zwraca co prawda jej wartosc, ale teraz wszystko zalezy od tego, jak sformułujesz korzystanie z tego wyniku. Jesli tak System.out.println(suma()); to bedziesz mial poprawny wynik, jesli tak System.out.println(suma); to nie dziwne, ze wypisze Ci zero (w koncu nigdzie nie zmieniles wartosci zmiennej klasy o nazwie "suma").
Kapiszi?
Podobne ryzyko dotyczy niepotrzebnie deklarowanych publicznych zmiennych klasy o nazwach "a_ij". I ostatnia uwaga - jest uznawane za nieestetyczne tworzenie struktur danych z publicznym dostepem do prywatnych informacji (chyba ze w ostatecznosci, gdy taka struktura zastepuje np. cos w rodzaju Union lub jakies czesto wystepujace zespolenie zwracanych wartosci).