-3

即使我将计数变量 = 设置为 false,我也无法停止此循环。它不会转到 Main 类中调用的下一个方法。任何帮助将不胜感激。

主班

public class Main {


    public static void main(String[] args) {

        Var V = new Var();
        End E = new End();

        V.enter();
        E.end();

    }

}

变量类

public class Var {

    static int x = 0;
    static boolean count = true;


    public static void enter(){

        while (count = true ){
            x = x+10;
            System.out.println(x);
            count = false;
        }
    }

}
4

6 回答 6

5

代替

while (count = true ){

while (count == true ){

或者干脆

while(count){
   ...
}
于 2013-05-23T16:00:26.973 回答
3

改变

while (count = true) {

while (count) {

该表达式count = true是一个赋值,而不是一个比较,它将使用关系运算符。赋值表达式的结果是赋值,在这种情况下总是true

将布尔表达式与布尔文字(即count == trueor ((x && y) || z) == false)进行比较是丑陋且令人困惑的。只需使用表达式本身(count!((x && y) || z))。

于 2013-05-23T16:02:26.590 回答
2

即使这也应该起作用,因为 count 已经是布尔值。单等于 inwhile (count =true ){导致计数更改为真?`

 public class Var {

    static int x = 0;
    static boolean count = true;


    public static void enter(){

        while (count  ){
            x = x+10;
            System.out.println(x);
            count = false;
        }
    }

}
于 2013-05-23T16:02:33.203 回答
1

该行while (count = true)使用赋值运算符,而不是相等运算符。赋值运算符在赋值后返回变量的值——在本例中为true( reference )。

在运行时,赋值表达式的结果是赋值发生后变量的值。赋值表达式的结果本身不是变量。

所以你的循环实际上是这样的:

while (true){
    count = true;
    x = x+10;
    System.out.println(x);
    count = false;
}

要解决此问题,您可以使用相等运算符==或只是while (count). 后者是更好的风格,但两者都有效。

于 2013-05-23T16:08:52.447 回答
0

改变

while (count = true) {

while (count == true) {
于 2013-05-23T16:01:31.223 回答
0
while (count = true ){
            x = x+10;
            System.out.println(x);
            count = false;
        }

在这里你使用count = true. 这是一个始终返回 true 的分配操作。

所以你count == true来比较。

于 2013-05-23T16:01:40.277 回答