Mehrdimensionale Felder

Alsou

Aktives Mitglied
hallo, ich habe ich ein Programm, das die Länge und Breite eines Feldes einliest und ein Schachbrettmuster aus Nullen und Einsen erzeugt. Die Frage lautet, welche Anweisung ist es genau?? Also die, die dieses Schachbrettmuster aus Nullen und Einsen erzeugt. ich blicke nicht ganz durch... Danke

Java:
public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int breite=IOTools.readInt("Breite: ");
		int laenge =IOTools.readInt("Laenge: ");
		int [][] a= new int [laenge][breite];
		
		for (int i=0; i<laenge;i++)
			for (int j=0; j<breite;j++)
				a[i][j]=(i+j) %2;

		
		for(int [] zeile:a){
			for(int wert:zeile)
				System.out.print(wert);
			System.out.println();
		}
		
		
	}

}
 
Code:
(i+j) % 2;
% ist der Mod Operator, der sorgt für die nullen und einsen.
 
Naja die Schleife im Zusammenhang mit[c] a[j]=(i+j) %2;[/c] ist wohl dafür verantwortlich. Wenn du es so nicht nachvollziehen kannst, male es dir auf einen Zettel auf!
Spiele durch welche Werte i und j annehmen und was die addiert%2 ergeben...
 
PrintStream.html#println() Er macht einen Zeilenumbruch. Mann könnte stattdessen auch schreiben: System.out.println(wert); Hätte den selben Effekt: PrintStream.html#println(int)
Der Modulo-Operator gibt dir den Rest einer Division aus. Wenn du eine grade Zahl durch 2 teilst, dann ensteht kein Rest = 0. Ist die Zahl ungrade kommt 1 raus, da eine ungrade ganze Zahl bei der Divison durch 2 immer den Rest 1 haben muss. Deine Vermutung war also richtig.

Edit: Mist zu langsam^^
 
Mann könnte stattdessen auch schreiben: System.out.println(wert); Hätte den selben Effekt
Nee, das stimmt nicht so ganz. Würdest du das ersetzen würde er dir alle Zahlen untereinander schreiben und die Matrixstruktur geht verloren 😉
 
weil a ein zweidimensionales Array ist...das bedeutet, also ein Array von Arrays.....

int[][] a = {{1,2,3},{4,5,6}};

in
Code:
int[] zeile
steckt jetzt also [123] , [456] , usw...drin

Wird es so klarer? ;/
 
i=0
j=0
(0+0=0) % 2 = 0

Wir haben 2 Arrays und beide werden bei index 0 mit Null initialisiert oder ?? Wie schaut ein mehrdimensionales Array aus?
 
? Was ist denn jetzt noch offen was du nicht verstehst?
Zeilen 8-10 denke ich hast du verstanden(dort wird das Array/die Arrays mit 0 und 1 gefüllt)

Danach die Zeilen sind einfach nur für die Ausgabe da...

Zeile 13-17 könnte man auch so schreiben
Java:
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				System.out.print(a[i][j]);
			}
			System.out.println();
		}

oder

Java:
        for (int[] zeile : a) {
			System.out.println(Arrays.toString(zeile));
		}

oder wie auch immer...

Wo genau liegt jetzt dein Verständnisproblem? Arrays?
 
for(int [] zeile:a){
for(int wert:zeile)
System.out.print(wert);
System.out.println();
}

Also die erste For-Schleife bewirkt, dass alle Arrays aus a in Zeile sind und zweite For-Schleife bewirkt, dass alle Arrays aus Zeile ausgegeben werden. Gelten da Regeln wie bei normalen geschachtelten For-Schleifen? Danke🙂
 
Welche Regeln denn sonst?

Wir haben ein Array von einem Array von ints.
Die äußere Schleife geht das "äußere" Array durch und liefert nacheinander die "inneren" Arrays, wobei diese jeweils eine Zeile repäsentieren. Die innere Schleife geht nacheinander alle "inneren" Arrays duch, deren einzele Zellen damit die Spalten bilden. Bin ich mit einer Zeile fertig, muss natürlich noch der Zeilenumbruch kommen. Weiß nicht, wie man das noch ausführlicher erklären sollte...
 

Zurück
Oben