Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

以下のコードでyesボタンを押すと、test1が一生コンソールに表示されます。つまり一生繰り返し実行されています。なぜかわかりますか。

/**
* プログラム名:メソッドを呼び出す
* 作成者: 
* 作成日: Mon Jan 30 02:08:25 JST 2023
*/
public class NewClass extends Turtle {
    //画像の生成
    ImageTurtle q1 = new ImageTurtle("1.jpg");
    ImageTurtle q1y = new ImageTurtle("2.jpg");
    ImageTurtle q1n = new ImageTurtle("3.jpg");
    ImageTurtle q2y = new ImageTurtle("4.jpg");
    ImageTurtle q2n = new ImageTurtle("5.jpg");
    ImageTurtle q3y = new ImageTurtle("6.jpg");
    ImageTurtle q3n = new ImageTurtle("7.jpg");
    //ボタンタートルの生成    
    ButtonTurtle yes = new ButtonTurtle("Yes");
    ButtonTurtle no = new ButtonTurtle("No");
    
    //起動処理
    public static void main(String[] args) {
        Turtle.startTurtle(new NewClass(), args);
    }
    
    //タートルを動かす処理
    public void start() {
        hide();
        window.size(1200,700);
        q1.size(1200,700);
        q1.warp(600,300);
        
        q1y.size(1200,700);
        q1y.warp(600,300);
        
        q1n.size(1200,700);
        q1n.warp(600,300);
        //隠す
        q1y.hide();
        q1n.hide();
        q2y.hide();
        q2n.hide();
        q3y.hide();
        q3n.hide();
        
        yes.size(220,120);
        yes.warp(450,260);
        
        no.size(220,120);
        no.warp(770,260);
        
        question1(400);
    }
    void question1(int X){//メソッドの呼び出し
        //yesが押されたらq1y表示,質問2メソッド
        while(true){
            sleep(0.025);
            if(yes.isClicked()){
                print("test1");
                q1.looks(q1y);
                yes.hide();
                no.hide();
                /*question2(400);    */
            }
            
            //noが押されたらq1n,質問2
            else if(no.isClicked()){    
                print("test2");
                q1.looks(q1n);
                yes.hide();
                no.hide();
                /*question2(400);*/
            }
            update();
            
        }    
        
    }
}

0

回答

192

閲覧

0件の回答

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名