情况:
我正在尝试将以下 for 循环转换为 while 循环:
final int MIN = 1;
final int MAX = 7;
int i=MIN,j=MIN;
for(i=MIN; i<=MAX;i++)
{
for(j=MIN;j<=MAX;j++)
{
if(i==j)
if(i==(MIN+MAX)/2)
System.out.print("o");
else
System.out.print("*");
else if (i+j == MIN+MAX)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
我认为这很简单:
while(i<=MAX)
{
while(j<= MAX)
{
if(i==j)
if(i==(MIN+MAX)/2)
System.out.print("o");
else
System.out.print("*");
else if (i+j == MIN+MAX)
System.out.print("*");
else
System.out.print(" ");
j++;
}
System.out.println();
i++;
}
但是,由于某种未知的原因,当 i>1 时,它永远不会进入内部 while 循环。我不确定我做错了什么......
最佳答案
每次 for 循环开始时,它都会给出 MIN 的 j 值。 while 循环不会,因此您必须在循环之后替换值。如果在内循环之前没有声明 j-MIN;
,则在第一个内循环迭代之后 j 将为 8,因此它不是 <=8
public static void main(String []args){
final int MIN = 1;
final int MAX = 7;
int i=MIN,j=MIN;
while(i<=MAX)
{
j=MIN; //ADDED
while(j<= MAX)
{
if(i==j)
if(i==(MIN+MAX)/2)
System.out.print("o");
else
System.out.print("*");
else if (i+j == MIN+MAX)
System.out.print("*");
else
System.out.print(" ");
j++;
}
System.out.println();
i++;
}
}
关于java - 将 for 循环转换为 while 循环会产生与预期不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615146/