82355


トグルを作りたいので以下のコードを書き、インスタンス化をして、何回か`toggle()`を呼び出しました。  
`true` `false` `true` `false` みたいに交互に出力されてほしいのですが、なぜか
`false`が連続してでてきます。助けてください。

[code]

    package client.mod;
    
    public class Mod {
        
        private boolean toggled;
        
        
        public void toggle() {
            System.out.println(this.toggled);
            this.toggled = !this.toggled;
        }
    
    }
    
[/code]


CC BY-SA 4.0
2021-09-08T11:13:29.483
82354
2021-09-08T12:31:24.983
2021-09-08T12:31:24.983
14101
48116
question
java
boolean値が勝手に代入されてる気がします


ご提示の`Mod`クラスには問題がないように思えます。

おそらく使う側の問題でしょう。たとえば、使う側でループを回していて、ループ内で毎回 `Mod`
のインスタンスを作ったりしていると、`false`が連続して表示されます。

[code]

    // 問題ある使いかた
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            // ループ内で毎回Modのインスタンスを作っている
            Mod m = new Mod();
            m.toggle();
        } 
    }
    
[/code]

その場合はループに入るより前に `Mod` のインスタンスを作れば解決します。

[code]

    public static void main(String[] args) {
        // ループに入るより前にModのインスタンスを作る
        Mod m = new Mod();
        for (int i = 0; i < 10; i++) {
            m.toggle();
        } 
    }
    
[/code]


CC BY-SA 4.0
2021-09-08T11:40:07.253
82355
2021-09-08T11:40:07.253
14101
82354
answer