Widzialność zmiennych w klasach

0

Witajcie! Dopiero zaczynam naukę języka JAVA i staram się nie korzystać z gotowców i do wszystkiego dochodzić sam, mimo wszystko, może to z powodu nocek, może braku inteligencji bądź zwykłego przemęczenia, nie jestem w stanie zrozumieć dlaczego nie mogę się odwołać w głównej klasie do stworzonej w osobnej klasie tablicy. Skopiuję najważniejsze fragmenty.

Mam osobną klasę, w osobnym pliku, krótka, wygląda tak:

public class dzialania
{
  double liczba1, liczba2; 
    public dzialania()  //konstruktor
    {
     liczba1=1; liczba2=1; //test 
    }
    
 void TworzTablice1W(int A) /*A - wielkość tablicy void - nie zwraca wartosci, ma tylko stworzyc tablice
    {
 int tablica1W[] = new int[A];   
     }
}

I w głównej klasie odwołać się chce do tej powyżej. Wiec pisze tak:

dzialania wykonaj = new dzialania();// działa :D
wykonaj.TworzTablice1W(20);//   również działa i 

tablica1W[2] = 1;// bądź  System.out.println(tablica1W[3]);//nie dziala.... wywala "cannot find symbol - variable tablica1W"

Próbowałem modyfikować ten kod już kilka razy, szukając rozwiązania jednak nic nie przynosi rezultatu...

Pomóżcie, bardzo proszę...

Pozdrawiam
niepoprawny

1

Nie uda Ci się odwołać do zmiennej lokalnej w klasie z innej klasy.

public class dzialania
{
    double liczba1, liczba2;
    int[] tablica1W; 
    public dzialania()  //konstruktor
    {
        liczba1=1; liczba2=1; //test 
    }
 
    void TworzTablice1W(int A) //A - wielkość tablicy void - nie zwraca wartosci, ma tylko stworzyc tablice
    {
        tablica1W = new int[A];   
    }
}

i oczywiście

wykonaj.tablica1W[2] = 1;
1

Ale co to w ogóle jest? o_O Czy ty w ogóle rozumiesz na czym polega programowanie obiektowe? Czym sie różni obiekt od klasy? I w ogóle jak wygląda jakikolwiek przepływ sterowania w programie?
W danym miejscu w kodzie masz dostęp TYLKO do:

  • zmiennych globalnych (w Javie ich nie ma)
  • Klas (ale nie do OBIEKTÓW klas)
  • zmiennych lokalnych deklarowanych w danym kontekście
    I koniec, kropka.

Ty tworzysz tablicę wewnątrz funkcji i NIGDZIE nie zapisujesz sobie "adresu" tej tablicy, ergo po wyjsciu z funkcji ona zostanie zniszczona, bo i tak nie miałbyś jak się do niej odwołać. Czemu twój pomysł jest totalnie bez sensu? A czego byś oczekiwał w takiej sytuacji:

dzialania ala = new dzialania();
dzialania ma = new dzialania();
dzialania kota = new dzialania();

ala.TworzTablice1W(10);
ma.TworzTablice1W(20);
kota.TworzTablice1W(30);

? Co by oznaczało to twoje odwołanie tablica1W[2] = 1; ?

0

bogdans, dziękuję za odpowiedź na tak trywialne pytania. Miałem drobną przygodę z Delphi i mam wrażenie jakby mnie tamten język w jakiś sposób... zepsuł. Tak czy inaczej, z JAVA dopiero zaczynam ale obiecuję mocno ograniczyć zadawanie zbyt prostych pytań.

Z

wykonaj.tablica1W[2] = 1;

oczywiście, moje totalne przeoczenie.

Jednakże nadal, w klasie działania gdy zrobiłem tak jak zaproponowałeś, w miejscu tablica1W[] = new int[A] wyskakuje mi błąd w trakcie kompilacji "not a statement".

Shalom pojechałeś mi, ale tego mi trzeba. Jak wspominałem, zaczynam dopiero, siedzę na oraclu, necie, w książkach ale przychodzi moment gdy czacha dymi mimo że błąd tkwi gdzieś np w kropce....

0

Bogdans, dziękuję. Może kiedyś się odwdzięczę. Jeszcze raz dziekuję!

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