# Zweidimensionales Array mit boolean Werten



## Burned (20. Jan 2011)

Hallo allerseits,

ich versuche eine Klasse zu schreiben, in der zuerst ein zweidimensionales array erstellt wird, in der dann alle Werte auf "true" gesetzt werden (Es werden "Bäume gepflanzt"). Danach soll in einer Main Methode eine Position angegeben werden, in der der Wert wieder auf "false" gesetzt wird (der "Baum" wird "gefällt"). Anschließend soll das array als String an die Main zurück geliefert werden.
Mein Problem ist, dass ich andauernd eine "OutOfBounds" Exceptions kriege und ich einfach nicht verstehe warum. Sieht einer von euch meinen Fehler?

Hier mein Code

```
public class BaeumeFaellen {

	int x = 0, y = 0, hoehe, breite;
	private boolean [][]array = new boolean [hoehe][breite];
	
	public BaeumeFaellen(int x, int y, int hoehe, int breite) {
		this.x = x;
		this.y = y;
		this.hoehe = hoehe;
		this.breite = breite;
	}
	
	int getX() {
		return x;
	}
	
	int getY() {
		return y;
	}
	
	boolean [][]pflanzen() {
		for (int i = 0; i < hoehe; i++) {
			for (int j = 0; j < breite; j++)
				array[i][j] = true;
		}
		return array;
	}
	
	boolean innerhalb() {
		if (getX() < hoehe && getY() < breite)
			return true;
		else
			return false;
	}
	
	boolean [][]faellen() {
		if (innerhalb()) 
			pflanzen()[getX()][getY()] = false;
		
		return pflanzen();
	}
	
	public String toString() {
		String out = "";
		
			for (int i = 0; i < hoehe; i++){
				for (int j = 0; j < breite; j++){
					if (array[i][j] == true)        //Hier wirft der Compiler mir den Fehler
						out = out + "Baum ";
					else
						out = out + "Kein Baum ";
					
					if (j == breite)
						out = out + "\n";
				}
			}
		
		return out;
	}
	
}
```

Und hier meine Main:

```
import javax.swing.*;
public class BaeumeTest {

	public static void main (String[] args) {
		int x,y,hoehe,breite;
		
		hoehe = Integer.parseInt(JOptionPane.showInputDialog("Höhe des Feldes: "));
		breite = Integer.parseInt(JOptionPane.showInputDialog("breite des Feldes: "));
		x = Integer.parseInt(JOptionPane.showInputDialog("x-te Position: "));
		y = Integer.parseInt(JOptionPane.showInputDialog("y-te Position: "));
		
		BaeumeFaellen baum = new BaeumeFaellen(x, y, hoehe, breite);
		
		JOptionPane.showMessageDialog(null, baum.toString());
	}
}
```


----------



## SlaterB (20. Jan 2011)

gibt doch einfach mal die Länge des Arrays aus == "schaue nach was da los ist", 
eine sicher komplizierte Vorstellung, nun ist aber Zeit damit anzufangen


----------



## ARadauer (20. Jan 2011)

private boolean [][]array = new boolean [hoehe][breite];

musst du innerhalb des konstruktors machen. das wird bei dir vorher ausgeführt bevor.. hoehe und breite gesetzt wird...

mach einfach mal ein System.out.println(array.length); in die lezte zeile des konstruktors, dann siehst du es...

also


```
private boolean [][] array;
    
    public BaeumeFaellen(int x, int y, int hoehe, int breite) {
        this.x = x;
        this.y = y;
        this.hoehe = hoehe;
        this.breite = breite;
        array = new boolean [hoehe][breite];
        System.out.println(array.length);
    }
```
so sollte es klappen...


----------



## Burned (20. Jan 2011)

Verdammt, jetzt seh ichs auch. Manchmal stell ich mich auch einfach nur doof an.. Vielen Dank für die Hilfe! =)


----------

