2016-06-30 9 views
1

Ich wollte eine Tabelle wie in here gezeigt formatieren. Aber ich habe Probleme, ganze Zahlen auszurichten. Wie in Bild zu sehen ist, sind die ersten vier Zeilen am oberen, ganze Zahlen rechts ausgerichtet. Gibt es eine Möglichkeit, ganze Zahlen über System.out.printf() oder String.format() als solche auszurichten? Was ich bisher versucht habe, ähnelt dem; aber es ist nicht dasselbe. Ganzzahlen sind linksbündig.Right Align Ganzzahlen (Java)

 String line = String.format("\n\nREGISTERS:\n"); 
    line += String.format("%-21s %+05d\n%-21s %02d\n%-21s %+05d\n%-21s %02d\n%-21s %02d\n\n","accumulator",accum, 
      "instructionCounter",instructionCounter,"instructionRegister",instructionRegister,"operationCode",operationCode,"operand",operand); 
    line += (String.format("MEMORY:\n")); 
    line += (String.format("%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d\n",0,1,2,3,4,5,6,7,8,9)); 



    for(int i = 0; i < memory.length; i += 10){ 
     line += String.format("%2d ", i); 
     for(int j = i; j < i+9; j++){ 
      line += String.format("%+05d ", memory[j]); 
     } 
     line += "\n"; 
    } 
+0

Mögliches Duplikat von [Javas System.out.format zum Ausrichten ganzzahliger Werte] (http://stackoverflow.com/questions/8215282/using-java-system-out-format-to-align-integer-values) – shmosel

+0

@shmosel Ich versuchte alle Lösungen in dieser Frage vor dem Posten, keiner von ihnen funktionierte. Ich habe sie wieder getestet, nachdem du gepostet hast. Vor allem die akzeptierte Antwort. – fafinu

Antwort

1

Eine Möglichkeit kann die ganzen Zahlen als String formatiert sein, um durch einen String.format() sich wie folgt übergeben: String.format("'%5s'", String.format("%02d", instructionCounter))
Damit Zeile im Code so etwas wie dies zu:

line += String.format("%-21s%+05d\n%-21s%6s%-21s%+05d\n%-21s%6s%-21s%6s", 
           "accumulator",accum, 
           "instructionCounter",String.format("%02d\n", instructionCounter), 
           "instructionRegister",instructionRegister, 
           "operationCode",String.format("%02d\n", operationCode), 
           "operand",String.format("%02d\n", operand)); 

Producing Ausgabe als:

REGISTERS: 
accumulator   +0000 
instructionCounter  00 
instructionRegister +0000 
operationCode   00 
operand     00 

Hoffe, dass dies hilft!

+0

Es wird es sauberer und prägnanter machen, aber löst das Problem nicht. Vielen Dank. – fafinu

+0

Dieser Ausgabe formatiert die Tabelle wie Sie gezeigt haben. Wenn dies die Ganzzahlen als rechtsbündig ausgibt, aber das Problem nicht löst, was ist dann das ursprüngliche Problem? – davedwards

+0

mein schlechtes tut es. Ich habe etwas anderes gemacht und versaut. – fafinu