在Java中使用数组的楼梯打印图案

时间:2018-07-11 15:39:47

标签: java arrays printing

static void UsingArray(int n) {
    String[] arr = new String[n];
    for (int c = 0; c < n; c++) {
        for (int c1 = 0; c < (n - c - 1); c++) {
            arr[c1] = " ";
            System.out.print(arr[c1]);
        }
        for (int c1 = (n - 1); c1 > (n - c - 2); c1--) {
            arr[c1] = "#";
            System.out.println(arr[c1]);
        }
        System.out.println();
    }

}

我尝试过并且期望这样的输出:

//if n = 4
   #
  ##
 ###
####

但是它把我扔了

//n = 4
   #
#
#
#

我竭尽全力去调试它,但是现在花了我很多时间(我尝试了所有不同的方法,包括递归,stringbuilder来解决此打印模式问题,而数组方法是我目前唯一无法做到的方法)

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

这是因为System.out.println(arr[c1]);的缘故,应该是System.out.print(arr[c1]);,因为println()会打印出多余的newline。另外,您不需要arr[c1],只需使用System.out.print(" ");System.out.print("#");

修改后的代码:-

static void UsingArray(int n) {
    for (int c = 0; c < n; c++) {
        for (int c1 = 0; c1 < (n - c - 1); c1++) {
            System.out.print(" ");
        }
        for (int c1 = c; c1 >= 0; c1--) {
            System.out.print("#");
        }
        System.out.println();
    }

}

输出:-

   #
  ##
 ###
####