我在竞争对手的网站上解决了一个问题,但我的输出与测试用例输出不匹配,因为在输出之前会打印一个新行。我无法检测到我的代码的哪一部分正在打印它。有人请帮忙吗?
我的解决方案:
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>
#
##
###
####
#####
######
答案 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;符号,试试这种方式。