# IF mit mehrdimensionalem Boolean-Array



## Telithanor (5. Jan 2011)

Hallo,

bin neu hier und das ist mein erster Beitrag 

Ok, ich bin grade dabei ein kleines Spielchen zu programmieren. Ich hab ein zweidimensionales Feld mit einem Array erstellt


```
Boolean feld[][] = new Boolean[11][21];
```

ab und zu bekommt einer den wert "true" und dieses Feld soll ausgemalt werden,

aber ich bekomme zwar keinen fehler beim compilen, aber wenn ich das Applet starte bekomme ich beim Interpreter das hier raus:

Exception in thread "Thread-4" java.lang.NullPointerException
	at Tetris.male(Tetris.java:99)


Zeile 99 ist dann im unten stehenden Quelltext die Zeile mit der if-bedingung



```
for(int y = 1 ; y <= 20 ; y = y + 1){
      for(int x = 1; x <= 10; x = x + 1){
        if (feld[y][x]==true) stift.fillRect((x*10),(y*10),10,10);
      }
    }
```


Hilfe! Was ist daran falsch? Der malt garnichts ..

Bitte um Hilfe. Danke im Vorraus

Gruß, Telithanor


----------



## eRaaaa (5. Jan 2011)

Du hast kein boolean Array sondern ein Boolean Array. D.h. bei new Boolean[11][21]; steht dann zunächst erst einmal überall [c]null[/c] drin ...

(bei boolean feld[][] = new boolean[11][21]; hättest du zumindest dieses Problem erst einmal nicht)


----------



## Telithanor (5. Jan 2011)

Hmm.. 

1. Was ist der Unterschied zwischen Boolean und boolean (außer das "boolean" im Java-Editor automatisch fett geschrieben wird).

2. Ich hab 

Boolean feld[][] = new Boolean[11][21];

in

boolean feld[][] = new boolean[11][21];

geändert, aber das Problem bleibt weiter bestehen.

Bin jetzt echt ratlos. Bitte um Hilfe.


MfG, Telithanor


----------



## Landei (5. Jan 2011)

Lass dir doch mal im Inneren der inneren Schleife die Werte des Felds mit Koordinaten auf der Konsole ausgeben. Dass ein boolean[]-Feld erst mal mit false initialisiert wird, ist dir aber schon klar? 

Außerdem brauchst du niemals [c]if (x == true) [/c] zu schreiben, dann reicht immer  [c]if (x) [/c] (analog kannst du statt [c]if (x == false) [/c] bzw. [c]if (x != true) [/c] immer [c]if (! x) [/c] schreiben). [c]x = x + 1[/c] schreibt man (gerade bei Schleifen) als [c]x++[/c].


----------



## Telithanor (5. Jan 2011)

Ah das Problem hat sich von selbst gelöst.

Also nicht direkt von selbst. Der Fehler lag hier

if (feld[y][x]==true) stift.fillRect((x*10),(y*10),10,10);

musste so sein:

if (feld[x][y]==true) stift.fillRect((x*10),(y*10),10,10);

x und y mussten vertauscht werden.  

Das Array ist ja 11 und 21 groß und nicht umgekehrt. Danke euch trotzdem um Eure Hilfe.

MfG,
Telithanor


----------



## Murray (6. Jan 2011)

So ein Fehler dürfte aber nicht zu einer NullPointerException, sondern zu einer ArrayIndexOutOfBoundsException geführt haben.


----------



## Andi_CH (6. Jan 2011)

Bitte Java-Tags verwenden!


```
if (feld[x][y]==true)
```

;(


```
if (feld[x][y])
```


En schöne Tag


----------

