public class NestedLoopPattern {
public static void main(String[] args) {
final int HASHTAG_AMMOUNT = 6;
for (int i=0; i < HASHTAG_AMMOUNT; i++) {
System.out.println("#");
for (int j=0; j < i; j++) {
System.out.print(" ");
}
System.out.println("#");
}
}
}
我应该用嵌套循环制作这个模式,但是使用上面的代码我不能
##
# #
# #
# #
# #
# #
我只是继续把它作为我的输出:
#
#
#
#
#
#
#
#
#
#
#
#
答案 0 :(得分:1)
您错误地为System.out.println()
调用了第一个哈希标记,该标记正在打印您不想要的换行符。只需将该调用更改为System.out.print()
,您就应该这样做了:
public class NestedLoopPattern {
public static void main(String[] args) {
final int HASHTAG_AMMOUNT = 6;
for (int i=0; i < HASHTAG_AMMOUNT; i++) {
// don't print a newline here, just print a hash
System.out.print("#");
for (int j=0; j < i; j++) {
System.out.print(" ");
}
System.out.println("#");
}
}
}
<强>输出:强>
##
# #
# #
# #
# #
# #
答案 1 :(得分:1)
问题是在外循环的每次迭代中,您都要打印两个换行符。因此,您打印第一个&#34;#&#34;,然后打印换行符,然后打印其余部分。
您需要将第一个System.out.println("#");
更改为System.out.print("#");
,然后才能生效。
因此,您应该将代码更改为:
public class NestedLoopPattern {
public static void main(String[] args) {
final int HASHTAG_AMMOUNT = 6;
for(int i = 0; i < HASHTAG_AMMOUNT; i++) {
System.out.print("#"); //No need to print a newline here
for(int j = 0; j < i; j++) {
System.out.print(" ");
}
System.out.println("#");
}
}
}
这将为您提供预期的输出:
##
# #
# #
# #
# #
# #
答案 2 :(得分:0)
java8解决方案:
IntStream.rangeClosed(1, MAX)
.forEach(i -> IntStream.rangeClosed(1, i + 1)
.mapToObj(j -> j == i + 1 ? "#\n" : j == 1 ? "# " : " ")
.forEach(System.out::print)
);