如何在不费力的情况下以这种形式打印这个2d字符串数组(java)?

时间:2017-02-03 14:32:55

标签: java arrays printing output field

我正在尝试自己制作“猫找老鼠”的东西,但我遇到了麻烦,因为我打印字段的方式相当复杂/效率低。

所以我有这个领域:

String[][]field = {
            {"+", "+", "+", "+", "+", "+", "+", "+", "+"},
            {"+", " ", " ", " ", " ", " ", " ", "M", "+"},
            {"+", " ", "+", "+", "+", "+", "+", " ", "+"},
            {"+", " ", "+", "+", " ", " ", "+", " ", "+"},
            {"+", " ", " ", " ", " ", "+", "+", " ", "+"},
            {"+", " ", " ", "+", "+", "+", "+", " ", "+"},
            {"+", "C", " ", " ", " ", " ", " ", " ", "+"},
            {"+", "+", "+", "+", "+", "+", "+", "+", "+"},
        };

它应该像这样打印:

+++++++++
+      M+
+ +++++ +
+ ++  + +
+    ++ +
+  ++++ +
+C      +
+++++++++

这是我的代码,我是如何打印出来的。根据需要打印非常精细,但编码和完成的方式效率非常低......没有办法用几行代码完成所有这些操作?请注意,它必须与我发布的完全一样。

这是我的方式:

public class CatMouseCheap {

    public static void main(String[] args){

        String[][]field = {
            {"+", "+", "+", "+", "+", "+", "+", "+", "+"},
            {"+", " ", " ", " ", " ", " ", " ", "M", "+"},
            {"+", " ", "+", "+", "+", "+", "+", " ", "+"},
            {"+", " ", "+", "+", " ", " ", "+", " ", "+"},
            {"+", " ", " ", " ", " ", "+", "+", " ", "+"},
            {"+", " ", " ", "+", "+", "+", "+", " ", "+"},
            {"+", "C", " ", " ", " ", " ", " ", " ", "+"},
            {"+", "+", "+", "+", "+", "+", "+", "+", "+"},
        };

        for(int i=0; i<field.length; i++){
            for(int j=0; j<field[i].length; j++){
                System.out.print(field[i][j]);
            }
            System.out.println("");
        }

    }

}

1 个答案:

答案 0 :(得分:2)

System.out.println(
            Arrays.stream(field)
                .map(a -> String.join("", a))
                    .collect(Collectors.joining("\n")));

适用于java8