# Zahlenquadrat korrekt ausgeben



## Helex (18. Nov 2006)

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:


```
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!


----------



## Beni (18. Nov 2006)

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):

```
int size = 4;
int count = 0;
for( ... ){
  for( ... ){
    int n = count % size;
    count++;
    print...
  }
  count++;
}
```


----------



## Helex (19. Nov 2006)

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

Wünsch dir noch einen schönen Sonntag!


----------



## Sara (9. Jan 2007)

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 (9. Jan 2007)

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


----------

