我在for循环中遇到嵌套while循环的麻烦。我理解嵌套的for循环:
for (int i = 0; i<5;i++)
{
for (int j=i;j<5;j++)
{
System.out.print("*");
}
System.out.println();
}
当谈到for循环中的while循环时,我有点迷失了,有人可以向我解释一下吗?
Expected output:
*****
****
***
**
*
答案 0 :(得分:1)
就for
循环和while
循环之间的等效性而言,它基本:
for (INIT; CONDITION; POSTOP) { INIT;
BODY; while (CONDITION) {
} BODY;
POSTOP;
}
(范围和其他此类事项的变化我们不需要进入此处)。
因此,要使用for/while
解决方案来解决您的问题,您可以使用以下内容:
for (int i = 0; i < 5; i++) {
int j = i;
while (j < 5) {
System.out.print("*");
j++;
}
System.out.println();
}
通过笔和一些纸来维护变量,有时可以帮助您完成头脑中的代码,例如:
i j output
--- --- ------
如果你只是&#34;执行&#34;代码的每一行(您的原始代码或我的for/while
变体)在您的头脑中进行几次迭代,您应该看到发生了什么。而且,如果你并排进行,你会看到两种变体之间的等效性。
基本上,外循环从0到4计算(迭代),运行内循环然后输出换行符。
对于这些迭代中的每个,内部循环从i
开始计数到4,包括每次输出*
(没有换行符)。
因此,在第一个外循环迭代中,内循环从0
运行到4
,输出五颗星。
在第二个外循环迭代中,内循环从1
运行到4
,输出四颗星。
依此类推,到i
为4
的最终外循环迭代,因此内循环从4
运行到4
,输出一颗星。
就笔纸方法而言,您可以获得以下内容:
i j output
--- --- ------
0 0 *
0 1 *
0 2 *
0 3 *
0 4 *
\n
1 1 *
1 2 *
1 3 *
1 4 *
\n
2 2 *
2 3 *
2 4 *
\n
3 3 *
3 4 *
\n
4 4 *
\n
答案 1 :(得分:1)
好吧,首先你的for
循环可以写成
for (int i = 0; i < 5; i++) {
for (int j = i; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
接下来,让我们看一下for
loop的三个部分(来自维基百科链接)
for(INITIALIZATION; CONDITION; INCREMENT/DECREMENT){
// Code for the for loop's body
// goes here.
}
我们可以将其移至while
循环,如
INITIALIZATION;
while (CONDITION) {
// Code for the while loop's body
// goes here.
INCREMENT/DECREMENT;
}
作为一个单一的实际例子,
int j = i;
while (j < 5) {
System.out.print("*");
j++;
}
答案 2 :(得分:1)
如果只是更新while循环体内的计数器变量,那么for循环中的while循环可以表现得像嵌套for循环。或者,考虑一下for循环在每次迭代中的真实含义。
for (int i = 0; i<5;i++)
{
int j = i;
// for (int j=i;j<5;j++)
while(j < 5)
{
System.out.print("*");
j++;
}
System.out.println();
}