如何在Java中打印二维锯齿数组周围的边框

如何在Java中打印二维锯齿数组周围的边框,java,arrays,Java,Arrays,我需要在二维锯齿阵列周围放置一个边框,如下所示: {' ', ' ', ' '} {' ', ' ', ' '} {' ', ' ', ' ', ' '} {' ', ' ', ' ', ' '} {' ', ' ', ' ', ' ', ' '} 要打印如下所示的内容: ***** * * * * * * * * * * ******* 我想我从第一排开始: for (int i = 0; i < a.length; i++) { Sy

我需要在二维锯齿阵列周围放置一个边框,如下所示:

{' ', ' ', ' '}
{' ', ' ', ' '}
{' ', ' ', ' ', ' '}
{' ', ' ', ' ', ' '}
{' ', ' ', ' ', ' ', ' '}
要打印如下所示的内容:

*****
*   *
*   *
*    *
*    *
*     *
*******
我想我从第一排开始:

for (int i = 0; i < a.length; i++) {
          System.out.print('*');          
    }
for(int i=0;i
但我被难住了(如果这是正确的话)。如何在数组的维度之间打印


谢谢

我将从一个方法开始构建一条直线。这可以通过
StringBuilder
实现。从一个
*
开始,添加作为输入传入的所有字符,并在末尾添加另一个
*
。将其作为
字符串返回。像

public static String oneLine(char[] ch) {
    StringBuilder sb = new StringBuilder();
    sb.append("*");
    sb.append(Stream.of(ch).map(String::valueOf).collect(Collectors.joining("")));
    sb.append("*");
    return sb.toString();
}
然后我们可以称之为构建所有线路。可以通过复制第一个和最后一个条目(所有空格均为星形)来构建大纲。像

产出(按要求)


我们可以通过打印上边框,然后打印中间内容,最后打印下边框来处理此问题。这里的技巧是,我们实际上不必担心超出数组的索引。对于模式的中间部分,我们只需迭代数组的边界,并在两侧附加一个边界。除了第一个和最后一个锯齿状1D数组的大小外,上边框和下边框实际上并不涉及数组内容

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

for (int r=0; r < array.length; ++r) {
    System.out.print("*");
    for (int c=0; c < array[r].length; ++c) {
        System.out.print(array[r][c]);
    }
    System.out.println("*");
}

for (int i=0; i <= array[array.length-1].length + 1; ++i) {
    System.out.print("*");
}

*****
*   *
*   *
*    *
*    *
*     *
*******

for(int i=0;我在方法printA(char[]]a)中给出了2d数组的定义代码
*****
*   *
*   *
*    *
*    *
*     *
*******
for (int i=0; i <= array[0].length + 1; ++i) {
    System.out.print("*");
}
System.out.println();

for (int r=0; r < array.length; ++r) {
    System.out.print("*");
    for (int c=0; c < array[r].length; ++c) {
        System.out.print(array[r][c]);
    }
    System.out.println("*");
}

for (int i=0; i <= array[array.length-1].length + 1; ++i) {
    System.out.print("*");
}

*****
*   *
*   *
*    *
*    *
*     *
*******