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
など他の類似文のための
http://stackoverflow.com/questions/22416578/how-to-use-string-format-in-java固定幅のスペーシングを可能にするため、 'String.format'を試してみてください。 – Compass
他にもできることは、「8」が「15」未満の1文字であることから始まる可能性があります。たとえば、1桁の数字を「08」として印刷することもできます。それでは、間隔についてはあまり心配する必要はありません。しかし、先行ゼロで "フォーマット"する方法を理解すると、追加のスペースでフォーマットすることもできます... – GhostCat