【问题标题】:button execution absolutely ignores for-loop按钮执行绝对忽略 for 循环
【发布时间】:2014-05-13 16:32:23
【问题描述】:

单击按钮时,for 循环将被完全忽略。它只是跳过 循环并继续执行。为什么会出现这种情况。 终端打印“断点”,然后立即“完成”。

骨架代码:

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    if(SomeClass.someMethod() == true){
           boolean passed = false;
           for(int p = 0; passed = false; p++){
                  //my code...

           }
        System.out.println("breakpoint");
    }
    else{
           someJTextArea.append(...some message...);    
    } 
   System.out.println("finish");
}

【问题讨论】:

    标签: java swing for-loop jbutton


    【解决方案1】:

    你错过了一个等号,应该是

     boolean passed = false;
     for(int p = 0; passed == false; p++){
                  //my code...
     }
    

    就像现在一样,您不是在每次迭代时都检查 passed 的值,而是在做一个分配。

    另外,请务必在循环内更改 passed 的值以避免无限迭代。

    【讨论】:

    • 请注意,不要像那样比较布尔值,而是检查!passed,这样会更简洁。
    • 谢谢...正在考虑解决方案是 swing Worker 或其他令人惊奇的东西,你怎么会错过这些小事。
    【解决方案2】:
    passed = false
    

    意味着它将值false 分配给passed,然后评估为false

    改成

    passed == false
    

    如果你想要无限迭代

    【讨论】:

      【解决方案3】:

      您声明 boolean passed = false; 并将其用作 for 循环中的条件。 for(int p = 0; passed = false; p++)

      当你说 passed = false 它返回 false。所以把 = 改成 ==

      【讨论】:

      • 逻辑上是错误的。但在语法上它是正确的。你可以写 for(int p = 0;passed = false; p++) 并且编译器不会抱怨。编译器将传递的 = false 视为 false。
      【解决方案4】:

      这是任务: A = B 那就是比较: A == B

      所以您需要将循环更改为

      for(int p = 0; passed == false; p++){ 
      

      【讨论】:

        猜你喜欢
        • 2019-05-11
        • 2011-10-29
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        • 2017-04-29
        • 2021-12-19
        • 2014-07-24
        • 1970-01-01
        相关资源
        最近更新 更多