有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么for循环只运行两次

我不明白为什么for循环运行两次,第一个要打印的值应该是2,最后一个值应该是16而不是4,因为4仍然小于10

我做了一个for循环,将初始值增加1,但我没有尝试通过将初始值乘以第一个值来增加初始值

for (int i = 2; i <10; i = i*i) {

   System.out.println(i);

}

我希望它能运行4次,但它只运行了两次


共 (6) 个答案

  1. # 1 楼答案

    第一次i = 2,循环运行 第二次i = 4,循环运行 第三次i = 16,循环失败=>;中断

    欢迎来到stackoverflow。对于这些情况,您应该学会调试代码以更好地自我理解

  2. # 2 楼答案

    你在摆平。2,4,16但16大于i<;10所以它不会这样做

  3. # 3 楼答案

    因为i = i*i

    i = 2
    
    1. i = 2*2 = 4 (4 < 10)
    2. i = 4 * 2 = 8 (8 < 10)
    3. i = 8 * 2 = 16 (16 > 10)
    
  4. # 4 楼答案

    我试着解释一下如何为你工作

    1) You initialized variable i = 2
    2) Check i < 10
    3) Print(i) = 2
    

    ---下一个--

    1) i = i*i (2*2) = 4
    2) Check i < 10 = 4<10 = true
    3) Print(i) = 4
    

    ---下一个--

    1) i = i*i (4*4) = 16
    2) Check i < 10 = 16<10 = false
    3) EXIT
    
  5. # 5 楼答案

    用一张纸和一支笔就可以很容易地找到你的代码在做什么

    first run, i = 2 -> i < 10 == true -> print 2
    second run, i = 2*2 = 4 -> i < 10 == true -> print 4
    third run, i = 4*4 = 16 -> i < 10 == false -> out
    
  6. # 6 楼答案

    您的循环与此等效:

    int i = 2;      // Initializer
    while (i < 10)  // Condition
    {
        System.out.println(i);
        i = i * i;  // Update part
    }
    

    请注意,当i为10或更大时,它将永远不会进入循环的主体——因此它永远不会打印16

    换句话说,执行过程如下所示:

    • i设置为2
    • 检查:i是否小于10?是的,所以输入循环的主体
    • 打印i
    • 设置i = i * i,现在是4
    • 检查:i是否小于10?是的,所以输入循环的主体
    • 打印i
    • 设置i = i * i,现在是16
    • 检查:i是否小于10?不,那就结束吧