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

标签 java loops

情况:

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

相关文章:

java - 如何让我的弹出菜单在 Java 中工作?

java - java中的置信区间,测试对象列表中元素的随机选择

javascript - 计算数组中的元素并比较它们,javascript

r - 在 R 中向量化使用唯一函数的 for 循环

c++ - 如何循环直到 == true

java - Eclipse Mars保存后始终无法解决导入问题,但是仅清理项目就可以解决

java - 无法在 asyncTask 的 onPostExecute 中将 json 字符串设置为 TextView

java - Twitter4j:身份验证凭据丢失错误

c++ - 卡在 if 语句中,以检查列表中的数字

ruby - 如何在遍历数组时修改迭代器