# public array?



## JackintheBox (27. Nov 2010)

Hey =)
Ich schreib grade an einem Programm bei dem es sehr hilfreich wär ein array für die gesammte klasse zu definieren.
hab also

```
public int [][] spiel
```
hingeschrieben. Jetzt hab ich das Problem, dass ich das Array in eine Methode nicht initialisieren darf bzw mit inhalt führen darf -zumindest versteh ich so den Fehler beim kompilieren:
"non-static variable spiel cannot be referened from a static context".
gibts ne möglichkeit den fehler zu umgehen? die einträge bei google haben mir nicht wirklich weitergeholfen, da ich da den kontext meistens schon nicht verstanden hab.
der fehler tritt konkret auf, wenn ich zB schreibe:

```
spiel = new int [x][x]
```
 oder zB auf die spiel.length zugreifen will.

Sollte ich die Idee zur Vereinfachung so ein public array zu benutzten verwerfen (wär sehr ärgerlich) oder gibt es nur 2-3 Regeln an die ich mich bei der Verwendung halten mussß

Danke schonmal


----------



## gman (27. Nov 2010)

Hi,

ich nehme an du rufst [c]spiel = new int [x][x];[/c] in der "main"-Methode auf, richtig? Diese Methode ist static,
das heisst du kannst auch nur auf Klassenvariablen (also Variablen die auch static sind) zugreifen. Die Variable
"spiel" ist bei dir als Instanzvariable definiert (nebenbei bemerkt kann die private sein, wenn sie nur in der Klasse
verwendet wird).

Du kannst also einfach [c]private static int[][] spiel;[/c] schreiben oder in "main" nur ein Objekt deiner Klasse
erzeugen und dann mit Instanzvariablen arbeiten. Lies dir noch mal etwas die Grundlagen durch, wenn dir das
alles nichts sagt.


----------



## Gast2 (27. Nov 2010)

wenn du das Array aus nem statischen Kontext (main-Methode oder eine andere statische) nutzen willst dann musst du das Array als static deklarieren:

```
public static int [][] spiel
```


----------



## JackintheBox (27. Nov 2010)

so einfach kann das manchmal sein, herzlichen danke =)


----------



## Gast2 (27. Nov 2010)

Aber noch nen Hinweis:
Einfach alles static machen ist auch keine Lösung


----------



## tuttle64 (27. Nov 2010)

EikeB hat gesagt.:


> Aber noch nen Hinweis:
> Einfach alles static machen ist auch keine Lösung




noch nen Hinweis: wenn mehrere Objekte dieser Klasse instanziert werden, werden sich alle Objekte das gleiche Array teilen müssen.


----------

