2016-06-30 4 views
1

hereのようにテーブルをフォーマットしたかったのです。しかし、私は整数を右揃えにする問題があります。画像で見られるように、最初の4行は上部にあり、整数は右揃えになっています。 System.out.printf()またはString.format()を介して整数を整列する方法はありますか?これまで私が試みたことは、それに似ています。しかしそれは同じではありません。整数は左揃えになります。整数を右揃え(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

[Javas System.out.formatを使用して整数値を整列する]の可能な複製(http://stackoverflow.com/questions/8215282/using-javas-system-out-format-to-align-integer-values) – shmosel

+0

@shmosel投稿する前にその質問に記載されているすべてのソリューションを試しましたが、いずれも機能しませんでした。あなたが投稿した後、私はそれらをもう一度試しました特に受け入れられた答え。 – fafinu

答えて

1

一つの方法は、次のようにそれ自体にString.format()を渡すことで、文字列として整数をフォーマットすることがあります String.format("'%5s'", String.format("%02d", instructionCounter))
だからあなたのコード内のその行はこのようなものになり:

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

生産します

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

これが役に立ちます。

+0

それはそれをよりきれいに簡潔にしますが、問題を解決しません。ありがとう。 – fafinu

+0

この出力は、あなたが示したようにテーブルをフォーマットします。これが右揃えの整数を出力しても問題は解決しない場合、元の問題は何ですか? – davedwards

+0

私の悪いです。私は何か他のことをしていて、うんざりしていた。 – fafinu