Bre*_*ent 5 java loops nested jgrasp
嘿,我有一个问题,我一直试图找出几个小时,我需要使用嵌套循环打印以下
-----1-----
----333----
---55555---
--7777777--
-999999999-
Run Code Online (Sandbox Code Playgroud)
这就是我到目前为止所拥有的.
public static void Problem6 () {
System.out.println("Problem 6:");
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print("-");
}
for (int j = 1; j <= 9; j += 2) {
System.out.print(j);
}
for (int j = 5; j >= i; j--) {
System.out.print("-");
}
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)
这就是它打印的内容
-----13579-----
----13579----
---13579---
--13579--
-13579-
Run Code Online (Sandbox Code Playgroud)
您有正确的短划线数,只是没有正确打印出数字.让我们来看看为什么:
哪个循环打印出数字?第二个嵌套for循环.
它有什么作用?它打印出j其中j的范围是从1到9和j由2循环的每次迭代递增.换句话说,1, 3, 5, 7, 9这在您的输出中得到确认
你想要它做什么?那么让我们来看看所需的输出.你想1被打印一次在第一第一线.你想3被打印3本次第三下一行.您希望在此之后的第五行5打印五次.等等.
你注意到一个模式吗?你想要的循环中,我们上面提到的打印相同的数(1,3,5,... i)的次数(1,3,5,... i).
编辑 Whooops我实际上误读了输出.我的答案仍然与以前非常相似,但我撒谎说你打印的是哪一行.它仍然是3 3倍,5 5倍,但不同的线路.从我的解决方案跳到实际解决方案的最简单方法是注意在偶数行上......你什么都不做.你甚至可以用这种方式编写你的解决方案.
另一个提示是,您应该专注于将每行上的数字和破折号分开.当你修复每一行的数字时,你可能会搞砸破折号码,但是你会发现如何轻松修复破折号.