Zahlenquadrat korrekt ausgeben

Status
Nicht offen für weitere Antworten.

Helex

Mitglied
Hallo,

ich bin zwar erst neu In Java doch macht mir folgende Aufgabe zu schaffen: Ich soll ein Zahlenquadrat ausgeben, dass folgendermaßen aussieht:

1 2 3 4
2 3 4 1
3 4 1 2

...

usw. die Zahlen werden dabei immer zyklisch verschoben:

Mein Code dafür sieht folgendermaßen aus:

Code:
public class Test {

	public static int n;
	public static int n1;
	public static int b = 5;
	public static int p = 5;
	public static int t = 0;
	public static int z = -1;
	public static int h;
	
	public static void main(String[] args) {
		
		for (int i = 1; i < b; i++) {			
		
			
			for (int j = 0 ; j < b - 1; j++) {				
				t = t + 1;
				n = t % p;	
				
				if (n != 0) {
					System.out.print(" " + n );
					
				} 	/*else for (int u = 1; u < b - 1; u++) {
					
					h = h + 1;
					System.out.print(" " + h );
				}
				h = 0 ;	*/			
					
			}
			t = t + 2;	
			
			System.out.print("\n");			
			
		}
		
	}
	
}

Die Ausgabe ist:

1 2 3 4
2 3 4
3 4 1
4 1 2

Ich weiß nicht was ich in den else Zweig packen soll, damit die Schleife wieder von vorne anfängt zu zählen.

Vielen dank für Ratschläge!
 
B

Beni

Gast
Es gibt eine einfachere Lösung, die ohne else auskommt. Gib mal dieses Quadrat aus:

0 1 2 3
1 2 3 0
2 3 0 1
3 0 1 2

Und wenn das funktioniert, schreibst du statt "print( " " + (x) )" einfach "print( " " + (x+1) )".

Codemässig wird das so in die Richtung gehen (ungetestet):
Code:
int size = 4;
int count = 0;
for( ... ){
  for( ... ){
    int n = count % size;
    count++;
    print...
  }
  count++;
}
 

Helex

Mitglied
Vielen vielen dank, funktioniert bestens und ist viel übersichtlicher als mein Code.

Wünsch dir noch einen schönen Sonntag!
 
S

Sara

Gast
Als die erste Zeile und Spalte wird ganz normal mit 1 bis n ausgegeben, aber die inneren , wie ist das geregelt?
Wann werden die Zahlen im Inneren des Arrays geändert?
In dedr 2 Spalte , 2 Zeile kommt 3, weil 2 und 2gleich sind, und wieso kommen dann 341 (in der 2 Zeile)??

1 2 3 4
2 3 4 1
3 4 1 2

gruß
Sara
 

Marco13

Top Contributor
In diesem Programm gibt es keinen Array...
Man fängt an mit der Zeile
1 2 3 4
und verschiebt die Zeile um 1 nach links. Die 1 fällt links raus, und wird rechts angehängt
2 3 4 1
Das veschiebt man wieder um 1 nach links. Die 2 fällt links raus, und wird rechts angehängt
3 4 1 2

usw..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben