情况:
我正在尝试将以下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循环。我不确定自己在做什么错...
答案 0 :(得分:2)
每次循环启动都会给出MIN的j值。 While循环并非如此,因此您必须在cirtucs循环后替换值。如果您未在内循环之前声明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++;
}
}