gpt4 book ai didi

java - 将 for 循环转换为 while 循环会产生与预期不同的结果

转载 作者:行者123 更新时间:2023-12-02 01:27:46 24 4
gpt4 key购买 nike

情况:

我正在尝试将以下 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com