一番簡単に考えるとループとString.join
でできます。Java Stream APIを使えばコードはもう少し短くなりますが、最初はちょっと何が行われているか分かりづらいかもしれませんね。それらのパターンを実装してみましたので見比べてみてください。
Java
1public class Main {
2 public static void main(String[] args) {
3 String[][] map = {
4 {"+","-","-","-","-","-","+",},
5 {"| ","□","□","□","□","□"," |",},
6 {"| ","□","□","□","□","□"," |",},
7 {"| ","□","□","□","□","□"," |",},
8 {"| ","□","□","□","□","□"," |",},
9 {"| ","□","□","■","□","□"," |",},
10 {"+","-","-","-","-","-","+",}
11 };
12
13 System.out.println(">>> #1 単なるループで");
14 for (int i = 0; i < map.length; i++) {
15 String line = String.join("", map[i]);
16 System.out.println(line);
17 }
18
19 System.out.println(">>> #2 自作のメソッドで");
20 String s = toBoardString(map);
21 System.out.print(s);
22
23 System.out.println(">>> #3 Stream と StringJoiner");
24 java.util.StringJoiner sj = new java.util.StringJoiner("\n");
25 java.util.Arrays.stream(map).forEach(line -> sj.add(String.join("", line)));
26 System.out.println(sj.toString());
27 }
28
29 public static String toBoardString(String[][] source) {
30 StringBuffer sb = new StringBuffer();
31 for (int i = 0; i < source.length; i++) {
32 sb.append(String.join("", source[i]));
33 sb.append("\n");
34 }
35
36 return sb.toString();
37 }
38}
39
実行結果です。
sh
1$ java -version
2openjdk version "1.8.0_252"
3OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09)
4OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
5$ javac Main.java
6$ java Main
7>>> #1 単なるループで
8+-----+
9| □□□□□ |
10| □□□□□ |
11| □□□□□ |
12| □□□□□ |
13| □□■□□ |
14+-----+
15>>> #2 自作のメソッドで
16+-----+
17| □□□□□ |
18| □□□□□ |
19| □□□□□ |
20| □□□□□ |
21| □□■□□ |
22+-----+
23>>> #3 Stream と StringJoiner
24+-----+
25| □□□□□ |
26| □□□□□ |
27| □□□□□ |
28| □□□□□ |
29| □□■□□ |
30+-----+
31$
32