为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地6264312 2021-12-22 16:06:23
我需要在像这样的二维锯齿状数组周围放置一个边框:{' ', ' ', ' '}{' ', ' ', ' '}{' ', ' ', ' ', ' '}{' ', ' ', ' ', ' '}{' ', ' ', ' ', ' ', ' '}要打印如下所示的内容:******   **   **    **    **     ********我想我从第一行开始:for (int i = 0; i < a.length; i++) {          System.out.print('*');              }但我被难住了(如果它甚至是正确的)。我怎么能在数组的维度之间打印?
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

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


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("*");

}


*****

*   *

*   *

*    *

*    *

*     *

*******


查看完整回答
反对 回复 2021-12-22
?
慕斯王

TA贡献1864条经验 获得超2个赞

我将从一种构建单行的方法开始。这可以通过StringBuilder. 以 a 开头*,添加作为输入传入的所有字符,最后添加另一个*。将其作为String. 喜欢,


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();

}

然后我们可以调用它来构建所有的行。可以通过复制第一个和最后一个条目(所有空格为星号)来构建大纲。喜欢,


char[][] arr = { { ' ', ' ', ' ' }, { ' ', ' ', ' ' }, { ' ', ' ', ' ', ' ' }, 

        { ' ', ' ', ' ', ' ' }, { ' ', ' ', ' ', ' ', ' ' } };

System.out.println(oneLine(arr[0]).replace(' ', '*'));

for (char[] ch : arr) {

    System.out.println(oneLine(ch));

}

System.out.println(oneLine(arr[arr.length - 1]).replace(' ', '*'));

输出(根据要求)


*****

*   *

*   *

*    *

*    *

*     *

*******


查看完整回答
反对 回复 2021-12-22
  • 2 回答
  • 0 关注
  • 244 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信