在输出之前打印新行?

时间:2016-08-22 12:17:26

标签: java output

我在竞争对手的网站上解决了一个问题,但我的输出与测试用例输出不匹配,因为在输出之前会打印一个新行。我无法检测到我的代码的哪一部分正在打印它。有人请帮忙吗?

Problem

我的解决方案:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    for(int i=n;i>=0;i--){
        int count=0;
        while(count<i){
            System.out.print(" ");
            count++;
        }
        while(count!=n){
            System.out.print("#");
            count++;
        }
        System.out.println();
    }
}

测试用例o / p:

     #
    ##
   ###
  ####
 #####
######

我的O / p:

  <NEWLINE> 
         #
        ##
       ###
      ####
     #####
    ######

2 个答案:

答案 0 :(得分:2)

在第一个for迭代中,您只打印空格,然后打印一个新行。

int n = in.nextInt();  
for(int i = n; i >= 0; i--) {
    int count=0;
    // At the first for iteration print exactly n spaces
    while(count < i){
        System.out.print(" ");
        count++;
    }
    // Here count equals i that equals n in the first for iteration
    // SO doesn't enter in the while
    while(count!=n){
        System.out.print("#");
        count++;
    }
    // And prints the new line
    System.out.println();
}

如果用SPACE代替。输出应该是:

......
.....#
....##
...###
..####
.#####
######

要解决您的问题只需从n - 1开始循环

请注意,您永远不需要打印只有空格的行。

答案 1 :(得分:0)

for(int i=n;i>=1;i--){
        int count=0;
        while(count<i-1){
            System.out.print(" ");
            count++;
        }
        while(count!=n){
            System.out.print("#");
            count++;
       }
        System.out.println();
    }

因为第一次迭代你已经跑了六次所以没有更多地方可以放置#34;#&#34;符号,试试这种方式。