Java 基本循环问题,包括while和for

Java 基本循环问题,包括while和for,java,for-loop,while-loop,Java,For Loop,While Loop,我不明白为什么我在这里等于3。for循环中的条件部分适用于n1=4n2=2和n1=3n2=3。我不应该等于2吗?一个详细的,一步一步的解释会很有帮助 public static void main(String[] args) { int n1 = 4; int n2 = 2; int i = 0; while (n2 <= 4) { for (; n1 >= n2; n1--) i++; n2++;

我不明白为什么我在这里等于3。for循环中的条件部分适用于n1=4n2=2和n1=3n2=3。我不应该等于2吗?一个详细的,一步一步的解释会很有帮助

public static void main(String[] args) {
    int n1 = 4;
    int n2 = 2;
    int i = 0;
    while (n2 <= 4) {
        for (; n1 >= n2; n1--)
            i++;
    n2++;
    }
    System.out.println(i);
    System.out.println(n2 + " " + n1);
}
publicstaticvoidmain(字符串[]args){
int n1=4;
int n2=2;
int i=0;
而(n2=n2;n1--)
i++;
n2++;
}
系统输出打印LN(i);
系统输出打印Ln(n2+“”+n1);
}

当您的代码第一次执行while循环时,它直接进入for循环并将i的值增加三倍。因为for循环一直执行到n1低于n2

for循环的第一步

4 >= 2 (n1 >= n2)
    increase i (i becomes 1)
    loop decreases n1 (n1 becomes 3)
3 >= 2 (n1 >= n2)
    increase i (i becomes 2)
    loop decreases n1 (n1 becomes 2)
2 >= 2 (n1 >= n2)
    increase i (i becomes 3)
    loop decreases n1 (n1 becomes 1)
当n1变为1时,它退出循环。在while循环的第二次迭代中,它不会进入for循环,因为n1低于n2


所以你的变量i的值是3。

如果它是:
for(;n1>n2;n1-)
那么我将是2

这很简单,你试过调试吗?for循环没有任何用处。您是否打算使用
i++语句是否在该循环中?
while
语句意味着您将循环三次。每次绕过该循环,您都会递增
i