GRY-Online.pl --> Archiwum Forum

program w javie

23.11.2007
01:03
smile
[1]

.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;











23.11.2007
01:09
[2]

.coma. [ Pretorianin ]

zamiast < powinny być nawiasy klamrowe, a tam gdzie pisze macierz[j] powinno byc macierz |i| [j], niewiem czemu gol to zmiania...

23.11.2007
01:09
[3]

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(...)

23.11.2007
01:12
[4]

.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...

23.11.2007
01:15
[5]

wysiak [ Generaďż˝ ]

"suma cały czas jest zero" - czyli kiedy? I po co jest tam this.?

23.11.2007
01:27
[6]

.coma. [ Pretorianin ]

this po to, ze próbuje po kolei wszytskiego
odnosnie sumy, to po wykonaniu metody przypisanie, w podgladzie wartosci nadal wynosza zero

23.11.2007
04:09
smile
[7]

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).

© 2000-2025 GRY-OnLine S.A.