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
 

Xandro

- Mistkerl -
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
 

essenz

Grünschnabel
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:
 

zeja

Erfahrenes Mitglied
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));
}
 

Johannes7146

Goldschnabel
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])
			}
		}
 

essenz

Grünschnabel
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ß
 

Johannes7146

Goldschnabel
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");
}
 

zeja

Erfahrenes Mitglied
@Johannes7146: Java ist eine Plattformunabhängige Sprache und ein \n ist dies absolut nicht. Es gibt drei schönere Möglichkeiten die mir so spontan einfallen:
Java:
System.out.println("");
System.out.printf("%n");
final LINE_SEP = System.getProperty("line.separator");
System.out.print(LINE_SEP);
 

Neue Beiträge

Forum-Statistiken

Themen
272.360
Beiträge
1.558.626
Mitglieder
187.833
Neuestes Mitglied
SirrDansen