problem z odczytaniem zmiennych z innej klasy

0

Witam ponownie

klasa w ktorej przechowuje zmienne:

/*
 * zmienne.java
 *
 * Created on 3 czerwiec 2007, 21:05
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package zabawa1;

/**
 *
 * @author Ice
 */
public class zmienne 
{
    public String adres;

    public int pozycja1 [] = new int [4];
    public int pozycja2 [] = new int [4];
    public int pozycja3 [] = new int [4];
    public int pozycja4 [] = new int [4];
    public int pozycja5 [] = new int [4];
    public int pozycja6 [] = new int [4];
    public int pozycja7 [] = new int [4];
    public int pozycja8 [] = new int [4];
    public int pozycja9 [] = new int [4];
    public int pozycja10 [] = new int [4];
    
    /** Creates a new instance of zmienne */
    public String adres() 
    {
        System.out.println("\n\n akuatnie zmienna:" + adres);
        return adres;
    }
    public void zmiana_adresu( String zmiana)
    {
        adres=zmiana;
        System.out.println("\n\n po zmianie zmienna:" + adres);
    }
    
    public int wykaz_pozycji1(int j) 
    {
        return  pozycja1[j]; 
    }
    public int wykaz_pozycji2(int j) 
    {
        return  pozycja2[j];   
    }
    public int wykaz_pozycji3(int j) 
    {
        return  pozycja3[j];   
    }
    public int wykaz_pozycji4(int j) 
    {
        return  pozycja4[j];   
    }
    public int wykaz_pozycji5(int j) 
    {
        return  pozycja5[j];   
    }
    public void zmiana_pozycji1( int j, int liczba)
    {
        pozycja1[j]=liczba;
        System.out.println("zmienna wynosi: " +pozycja1[j]);
    }
    public void zmiana_pozycji2( int j, int liczba)
    {
        pozycja2[j]=liczba;
        System.out.println("zmienna wynosi: " +pozycja2[j]);
    }
    public void zmiana_pozycji3( int j, int liczba)
    {
        pozycja3[j]=liczba;
        System.out.println("zmienna wynosi: " +pozycja3[j]);
    }
    public void zmiana_pozycji4( int j, int liczba)
    {
        pozycja4[j]=liczba;
        System.out.println("zmienna wynosi: " +pozycja4[j]);
    }
    public void zmiana_pozycji5( int j, int liczba)
    {
        pozycja5[j]=liczba;
        System.out.println("zmienna wynosi: " +pozycja5[j]);
    }
}

proba odczytu zmiennych z innej klasy

zmienne adres = new zmienne();
System.out.println("   " + adres.wykaz_pozycji1(1));

Niestety wypisuje mi 0 :(
co robie zle ?!
pozdrawiam

0

I bardzo dobrze :) zmienne pozycjeX[] są polami klasy i jednocześnie tablicami. Zatem w momencie inicjacji obiektu:
Tablice zostają zainicjowane
Elementy tablicy zostają zainicjowane z wartościami domyślnymi czyli dla int 0.

0

czyli mam rozumiec ze wystarczy przypisac wartosci do tablic i wszystko bedzie dobrze ?! zgadza sie Koziołek ?!
pozdrowionka :)

0

aaa wlasnie :) zapomnialem jednej waznej rzeczy napisac :(
Tym zmiennym wczesniej przypisywane sa wartosci z innej klasy. Wszystko pieknie dziala, tamta klasa moze je odczytac. Niestety jak tylko chce odczytac te zmienne (maja juz wartosci!) przez inna klase to nie moge. Wypisuje ciagle 0 .
Jak odczytac te zmienne ?

0

Tak ale w przykładzie który podałeś tworzysz nowy obiekt. Tym samym musisz wszystkie te pola na nowo ustawiać. Lepiej jest zastosować wzorzec Singleton.

0

Czy moglbys, jesli masz czas Koziolek, napisac mi jak to ma wygadac u mnie ?!
bede bardzo wdzieczny za to:)
pozdrawiam:)

0

Najprawdopodobniej twój kod wygląda w ten sposób:

zmienne adres = new zmienne();
//...
adres.zmiana_pozycjiX( int j, int liczba);
//....
zmienne adres2 = new zmienne();
System.out.println("   " + adres2.wykaz_pozycji1(1));

i tak w obiekcie adres pola są poustawiane zgodnie z tym co wstawiłeś w funkcjach. Jednak w adres2 nie są ustawione. Każdy obiekt (czyli cos reprezentowane przez zmienną) ma własny zestaw pól. Ustawienie pól dla adres nie powoduje automatycznego ustawienia dla adres2. Rozwiązaniem jest albo nadanie polom pozycjaX atrybutu static, albo zastosowanie wzorca Singleton:
http://pl.wikipedia.org/wiki/Wzorzec_singletonu

0

dzieki wielkie Koziolek :)
calkowicie zapomnialem o static :)
dzieki jeszcze raz :)
pozdrowka :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1