Java - cannot make static reference...

Odpowiedz Nowy wątek
2011-08-06 16:01
0

Mam taki program:

package pl.java.moj_pakiet;
 
import java.util.Random;
 
public class Tab {
 
    public static void main(String[] args) {
        int tab[][] = new int [4][];
        tab[0] = new int [3];
        tab[1] = new int [4];
        tab[2] = new int [5];
        tab[3] = new int [1];
 
        Wprowadz(tab);
    }
 
    public void Wprowadz(int t[][])
    {
            Random rn = new Random();
 
            int i, j;
            int n = t.length;
            for (i = 0; i < n; i++)
            {
                int m = t[i].length;
                for (j = 0; j < m; j++)
                    t[i][j] = rn.nextInt();
            }
    }
}

I teraz Eclipse mówi, że nie mogę użyć metody wprowadź, ponieważ:
Cannot make a static reference to the non-static method Wprowadz(int[][]) from the type Tab

Jestem świeży w Javie, uczę się dopiero od kilku dni, w zasadzie to od wczoraj. Czemu wyskakuje taki błąd? Przesiadam się z C++, a tam takich rzeczy nie ma.

edytowany 1x, ostatnio: madmike, 2011-08-06 16:29

Pozostało 580 znaków

2011-08-06 16:14
0

W C++ i każdym innym języku obiektowym (czy tam zorientowanym, nie pamiętam klasyfikacji) też tak jest, tyle że w GCC komunikat jest łatwiejszy do zrozumienia przez laika: http://ideone.com/DJe47

Rada na przyszłość: staraj się nie tworzyć metod i pól statycznych, a w metodzie GłównaKlasa.main(args) najlepiej wrzuć tylko jedną linijkę: new GłównaKlasa().metodaOdpalającaWszystko(args). Sunowska (teraz już Oraclowa) implementacja Javy ma (a w każdym razie miała) problemy (tzn bugi) związane z kompilowaniem dużej ilości kodu z (głównej, a przez to i statycznej) metody main i bezpośrednio wywoływanych metod statycznych.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit, 2011-08-06 16:56

Pozostało 580 znaków

2011-08-06 16:17
Bolson
0

Jeśli odwołujesz się do nie-statycznej metody to musisz utworzyć obiekt klasy (w tym przypadku klasy Tab) i wywołać metodę w sposób obiekt.metoda() . Możesz również uczynić tę metodę statyczną i wtedy odwołać się do niej poprzez nazwa_klasy.metoda()

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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