Input/Output Magisches Quadrat Rechts Formatieren

Hi Leute,

ich habe ein Problem bei der Ausgabe des Magischen Würfels.
Meine Ausgabe sieht ungefähr so aus:
| 17 | 24 | 1 | 8 | 15 |
| 23 | 5 | 7 | 14 | 16 |
| 4 | 6 | 13 | 20 | 22 |
| 10 | 12 | 19 | 21 | 3 |
| 11 | 18 | 25 | 2 | 9 |
Kann mir jemand sagen wie ich meinen code verändern muss damit er rechtsbündig formatiert ist?

Java:
public class magic extends Environment {

  public static void main(String[] args) {
    new magic().mainProgram(args);
  }

  void mainProgram(String[] args) {
  int n = 0;
	int i = 1;
	int x;
	int zeile = 0;
	int spalte = 0;
	
	System.out.print("Bitte geben Sie die Ordnung n, n>2 "
			+ "und n ungerade ein: ");
	n = stdin.readInt(); // Ordnung einlesen 
	
	// Bei falscher eingabe erneut eingeben bzw. einlesen
	while(n<3 || n==1 || n%2==0){ 
		System.out.print("Der Wert denn Sie eingeben "
		+ "muss ungerade sein! Bitte geben Sie einen neuen Wert ein: ");
		n = stdin.readInt();
	}
	
	int [][] feld = new int [n][n];
	zeile = 0;
	spalte = n/2;
	
	// Die 1 kommt immer in die mitte der der ersten Zeile.
	if(i==1){
		feld[0][n/2]=i;
	}
	
	// Jetzt wird das Array befüllt
	while(i < n*n) {
		if(i%n == 0){
			i++;
			zeile++;
			feld[zeile][spalte]=i;
		} 
		else {
			i++;
			zeile--;
			spalte++;
			spalte=spalte%n;
			zeile=(zeile+n)%n;
			feld[zeile][spalte]=i;
		}
	}
		// Array wird hier ausgegeben
		
		for(zeile=0; zeile<n; zeile++){
			for(spalte=0; spalte<n; spalte++){
				x=feld[zeile][spalte];
				System.out.print(" | ");
				System.out.print(x);
				
				if(spalte==n-1){
					System.out.println("  | ");
				}
			}
		}
		
		int magische_zahl=0;
		magische_zahl=(n*((n*n)+1))/2;
		System.out.println("Die Magische Zahl ist: "+magische_zahl);
	
	
}
}

Dankeschön für eure hilfe im vorraus
 
Zuletzt bearbeitet:
Du könntest printf anstatt print nutzen.
Java:
System.out.printf("%2d", x);
Dadurch werden x solange leerzeichen vorangestellt, bis die Länge 2 beträgt.
Code:
Bei x=2 ist die Ausgabe:
 2
Bei x=42:
42
 
Wie wäre es mit folgender Zeile 57:
Java:
System.out.print(x<10 ? " " + x : x);
und in Zeile 48:
Java:
System.out.println(" |");
 
Zuletzt bearbeitet:

Zurück
Oben