2016-11-03 17 views
0

このコードの出力を書式設定して、行と列の合計が前記行/列の横に/下に表示されるようにしたいと考えています。私は数字を正しいものにしていますが、スペースや文字数はあまりにも大きすぎて、どんなサイズの正方形に対しても正しくフォーマットできません。ここに私は現在持っているコードです。この魔方陣の書式設定

public void printSquare() 
{ 
    for (int x = 0; x < square.length; x ++) 
    { 
     System.out.println(); 
     for (int j = 0; j < square.length; j++) 
     { 
      System.out.print(" " + square[x][j]); 
     } 
     System.out.println(" | " + sumRow(x)); 

    } 
    System.out.print(sumOtherDiag()); 
    for (int x = 0; x < square.length; x ++) 
    { 
     System.out.print(" ^"); 
    } 
    System.out.println(sumMainDiag()); 
    for (int x = 0; x < square.length; x ++) 
    { 
     System.out.print(" " + sumCol(x)); 
    } 
} 

そして、これのために出力される。..

8 1 6 | 15 

    3 5 7 | 15 

    4 9 2 | 15 
15 ^^ ^15 
    15 15 15 

はどんな戦略がより確実にこのような何かをフォーマットするためにありますか?代わりに

System.out.printf(" " + square[x][j]); 

使用

System.out.printf("%4d", square[x][j]); // 4 positions for right-aligned decimal 

など他の類似文のための

+0

http://stackoverflow.com/questions/22416578/how-to-use-string-format-in-java固定幅のスペーシングを可能にするため、 'String.format'を試してみてください。 – Compass

+0

他にもできることは、「8」が「15」未満の1文字であることから始まる可能性があります。たとえば、1桁の数字を「08」として印刷することもできます。それでは、間隔についてはあまり心配する必要はありません。しかし、先行ゼロで "フォーマット"する方法を理解すると、追加のスペースでフォーマットすることもできます... – GhostCat

答えて