Array lässt sich nicht füllen

essenz

Grünschnabel
Hallo,
ich habe ein Problem mit einer Array Aufgabe: Ich habe ein zweideminsionales Array, deren Göße durch Usereingabe bestimmt werden soll. Anschließend sollen alle Felder mit '.' gefüllt werden. Danach soll man eine Koordinate eingeben, an deren Stelle ein 'x' geschrieben werden soll. Anschließend will ich das Array durch eine Methode ausgegeben bekommen:

Code:
public class FeldEinAusgabe {
	//array wird deklariert
	int zeile, spalte, x, y;
	char[][] matrix;	
	
	public FeldEinAusgabe (){}
	
       public void einlesen() {
		//Spalten und Zeilenanzahl werden eingelesen
		System.out.print("Bitte Anzahl der Zeilen angeben:");
		this.zeile = IO.readInt();
		System.out.print("Bitte Anzahl der Spalten angeben:");
		this.spalte = IO.readInt();	
		char[][] matrix = new char[zeile][spalte];
		//Array-Felder werden mit '.' belegt
		for (int z=0; z < matrix.length; z++) {
			for (int s=0; s < matrix[z].length; s++) {
				matrix[z][s] = '.';
			}
		}
		//Koordinaten für das 'x' werden angegeben		
		System.out.print("Bitte X-Koordinate eingeben:");
		this.x = IO.readInt();
		System.out.print("Bitte Y-Koordinate eingeben:");
		this.y = IO.readInt();
		this.x = x-1;
		this.y = y-1;
		//Überprüfung der Koordinaten		
		while (x > zeile || y > spalte) {
			System.out.println("Koordinaten außerhalb der Matrix");
			System.out.print("Bitte X-Koordinate eingeben:");
			this.x = IO.readInt();
			System.out.print("Bitte Y-Koordinate eingeben:");
			this.y = IO.readInt();
		}
		//Belege Feld mit 'x'
		matrix[x][y] = 'x';	
       }
	
	//Array wird ausgegeben
	public void ausgeben() {
		System.out.print(matrix);
	}
	
}

Als Ausgabe wird mir immer nur 'null' geliefert und ich hab keine Ahnung wieso.

Gruß essenz
 
Moin,

recht einfach zu sagen:
Du erzeugst mit
Java:
char[][] matrix = new char[zeile][spalte];
ein neues Array, obwohl Du eigentlich die Klassenvariable nutzen willst.
Also schreib die besagte Zeile einfach um:
Java:
matrix = new char[zeile][spalte];

Dann sollte das auch mit dem Füllen klappen.

Gruß,
Xan
 
Vielen Dank für die Antwort.
Der Array lässt sich jetzt tatsächlich füllen, ber nicht wie gewünscht, anstatt der Punkte und dem x an der gewünschten Stelle, bekomm ich als Ausgabe lediglich: [[C@42e816 :confused:
 
Arrays lassen sich nicht einfach so ausgeben.

Iteriere mit zwei for-schleife über den Array oder nutze Array.toString

Java:
for(char [] row : matrix){
System.out.println(Arrays.toString(row));
}
 
Java:
System.out.print(matrix);
gibt die Speicherstelle zurück wo dein arrayliegt.

Du must genauso wie du dein Arraygefüllt hast, auch alle chars einzelt wieder ausgeben mit den beiden for schleifen:
Java:
//Array-Felder ausgeben
		for (int z=0; z < matrix.length; z++) {
			for (int s=0; s < matrix[z].length; s++) {
				System.out.print(matrix[z][s])
			}
		}
 
Obwohl, zwei Fragen hätte ich noch:

1. an zeja: Gibt es eine Möglichkeit die Kommas in der Ausgabe "verschwinden" zulassen?

2. an johannes: Wie kann ich es veranlassen, dass der Array Zeile für Zeile ausgegeben wird und nicht in einer?

Gruß
 
Java:
for (int z = 0; z < matrix.length; z++) {
		for (int s = 0; s < matrix[z].length; s++) {
			//Zahl ausgeben
			System.out.print(matrix[z][s]+", ");
		}
		//Zeilenumbruch
		System.out.print("\n");
}
 
Zurück