# Frage: NullPointer, aber warum?



## SirAntonius (22. Apr 2012)

Guten Tag liebe Leute,

Ich schreibe gerade an einem Programm das Sudokus generieren soll. Jedoch habe ich bei dem generieren des Feldes einige Schwierigkeiten.
Das Ordnen der Zahlen in der Vertikalen und Horizontalen ist noch nicht implementiert.
Die Klasse Generator tut momentan folgendes(es funktionert noch nicht einwandfrei): 
Sie füllt ein Board(übliches 9x9 Sudokufeld) mit zufälligen zahlen. Danach wird in for-Schleifen abgefragt, in welche der 9 3x3 Kästchen sich ein Feld befindet, da es sich selber ausschließt habe ich eine Array mit der Größe 8 erstellt. Jedoch beim achten und letzten durchlauf der Array bekomme ich eine NullPointerException.

Hier wird die Array erstellt:

```
Figure[] field = new Figure[8];
```

Hier wird sie gefüllt:

```
for(int i = 0; i < 8; i++){
			for(int i1 = 0; i1 < 8; i1++){
				if(board.fields[i][i1].getFieldId() == fieldId && board.fields[i][i1] != board.fields[x][y]){
					field[fieldCount] = board.fields[i][i1];
					fieldCount ++;
				}
			}
		}
```

Und hier bekomme ich dann die NullPointer:

```
private boolean checkField(int count, Figure[] field){
		for(int i = 0; i < 8; i++){
			if(field[i].getCount() == count){
				//System.out.println("durchlauf" + String.valueOf(i +1));
				//System.out.println(String.valueOf(count) + " in field(" +String.valueOf(field[i].getxPos()) + "," + String.valueOf(field[i].getyPos()) + ")");
				return true;				
			}
		}
		return false;
	}
```

Schon mal danke das ihr das gelesen habt ,

SirAntonius


----------



## Marcinek (22. Apr 2012)

nach einem new XXX[43934] gibt es ein Array mit 43934 null werten. 

Man muss noch vorher new XXXX() machen.


----------



## SirAntonius (22. Apr 2012)

Marcinek hat gesagt.:


> nach einem new XXX[43934] gibt es ein Array mit 43934 null werten.
> 
> Man muss noch vorher new XXXX() machen.



Okay, aber warum ist der achte Eintrag der Array leer, wenn doch in der oberen for-Schleife sie eigentlich mit 8 Einträgen gefüllt werden sollte(9 Kästchen - das eine das gerade in der for abgefragt wird = 8)


----------



## Marcinek (22. Apr 2012)

Die Arrays sind korrekt, aber eventuell stimmt an der logik etwas nicht ==> Debug.


----------



## SirAntonius (22. Apr 2012)

deshalb sind da ja diese 1000 System.out s


----------



## Marcinek (22. Apr 2012)

Hmmm....

nein ;D


----------



## Spacerat (23. Apr 2012)

...hier stand ursprünglich mal Blödsinn...


----------



## ARadauer (23. Apr 2012)

```
if(board.fields[i][i1].getFieldId()
```
wenn in fields_[i1] null drinnen steht, dann fliegt die exception_


----------



## knucki (23. Apr 2012)

Hinweis an den TO: Wegen der Lesbarkeit ist es üblich, das Zählervariablen i,j,k usw benannt werden


----------

