足し算の表についてだけ回答します。
質問文にあるコードを実行したときの出力は次のようになりました。
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|
--+---+---+---+---+---+---+---+---+---+---+
0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |
1 |2 |3 |4 |5 |6 |7 |8 |9 |10|
2 |3 |4 |5 |6 |7 |8 |9 |10|11|
3 |4 |5 |6 |7 |8 |9 |10|11|12|
4 |5 |6 |7 |8 |9 |10|11|12|13|
5 |6 |7 |8 |9 |10|11|12|13|14|
6 |7 |8 |9 |10|11|12|13|14|15|
7 |8 |9 |10|11|12|13|14|15|16|
8 |9 |10|11|12|13|14|15|16|17|
9 |10|11|12|13|14|15|16|17|18|
ずれてしまっている原因は、表の部分の文字列の幅が 3 でなく 2 であることです。
そこで Format() 文で常に 文字幅 3 になるように変更してみました。
ついでに、縦 横 の数字を自由に設定できるようにもしてみました。
lang
1public class Tasizan {
2 public static void main(String args[]) {
3
4 int[] yoko = {1,3,5,7,9,2,4,6,8,0}; // 列の数字
5 int[] tate = {1,3,5,7,9,2,4,6,8,0}; // 縦の数字
6
7 // 横列
8 System.out.print( " +|");
9 for (int i: yoko) {
10 System.out.print(String.format("%3d|", i));
11 }
12 System.out.print("\n");
13
14 System.out.print("--+");
15 int len_yoko = yoko.length;
16 for (int i = 0; i < len_yoko; i++) {
17 System.out.print("---+");
18 }
19 System.out.print("\n");
20
21 // 表の中身
22 for (int i: tate) {
23 System.out.print(String.format("%2d|", i));
24 for (int j: yoko) {
25 System.out.print(String.format("%3d|", i + j));
26 }
27 System.out.print("\n");
28 }
29 }
30}
実行結果です。
+| 1| 3| 5| 7| 9| 2| 4| 6| 8| 0|
--+---+---+---+---+---+---+---+---+---+---+
1| 2| 4| 6| 8| 10| 3| 5| 7| 9| 1|
3| 4| 6| 8| 10| 12| 5| 7| 9| 11| 3|
5| 6| 8| 10| 12| 14| 7| 9| 11| 13| 5|
7| 8| 10| 12| 14| 16| 9| 11| 13| 15| 7|
9| 10| 12| 14| 16| 18| 11| 13| 15| 17| 9|
2| 3| 5| 7| 9| 11| 4| 6| 8| 10| 2|
4| 5| 7| 9| 11| 13| 6| 8| 10| 12| 4|
6| 7| 9| 11| 13| 15| 8| 10| 12| 14| 6|
8| 9| 11| 13| 15| 17| 10| 12| 14| 16| 8|
0| 1| 3| 5| 7| 9| 2| 4| 6| 8| 0|
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。