以前の質問の意図を簡略化するために改めて書いたコードですTimerTaskを使い制御するのでbreakなどの制御文は使えないです。何故Lをfalseにしてるのに終わらないのですか？

```

    public class Main  {
    
        public static void main(String[] args)  {
            boolean K = true;
            boolean L = true;
    
            while(and(K,L)){
                System.out.println("test");
                L = false;
            }
        }
    
        public static boolean and(boolean a, boolean b){
            if(a = true){
                if(b = true){
                    return true;
                }
            }
            return false;
        }
    
    }
    
```
CC BY-SA 3.0
2016-03-24T06:53:20.313
23410
2016-05-14T04:53:51.683
2016-03-24T07:25:22.837
14913
14913
question
java
= での比較がうまくいかない
`=`だと代入になります。比較演算子の `==` を使うと動くはずです。

```

    if(a == true){
    
```

もしくは、

```

    if(a){
    
```

だけでもいいですね。
CC BY-SA 3.0
2016-03-24T07:07:20.997
23411
2016-03-24T07:07:20.997
3054
23410
answer
Javaに限らず、殆どのプログラミング言語での = は代入です。  
あなたのコードは aの値をtrueにしてからaの中身を見てif判定 していることになります。  
（bも同じです）

```

    if(a = true){//判定結果は絶対にtrueにしかならない
        // aは絶対true（当たり前）
        if(b = true){//判定結果は絶対にtrueにしかならない
        //bは絶対にtrue（当たり前）
            return true;
        } else {
        //　ここでもbは絶対にtrue
        }
    } else {
    // ここでもaは絶対true
    }
    
    
    
    //正しい例
    if(a == true){
        if(b == true){
            return true;
        }
    }
    
```

要するに、あなたの書いたコードは分解すると下になります

```

    a = true;
    if (a == true) {
        b = true;
        if (b == true) {
        }
    }
    
```
CC BY-SA 3.0
2016-03-28T10:56:51.737
23546
2016-03-29T01:45:38.380
2016-03-29T01:45:38.380
10346
10346
23410
answer