-2

メソッドがブール値を更新するのを待つ無限ループがあります。これは学校ではすべて正常に機能しているように見えますが、自宅では機能しません。それが本当にコンピューターベースであることを意味するのかどうかはわかりません。そこにあるprintステートメントでも機能するからです。

while(running){
    //System.out.println(running);      
}

...

public static void passwordCheck(String pass){
    if(pass.equals(password)){
        correctPW = true;
    }
    else if(pass.equals(overKey))
        PWCoder.override(password);
    running = false;
}

...

public void actionPerformed(ActionEvent e){
    String temp = new String("");
    for(int x=0;x<passwordInput.getPassword().length;x++)
        temp+=passwordInput.getPassword()[x];
    PWCoder.passwordCheck(temp);
}

前述したように、このコードは print ステートメントのコメントを外して動作しますが、これはかなり見栄えが悪いです。ここで私がしようとしているのは、入力するパスワード画面です。間違っている場合は、別のウィンドウが開きます (コードは示されていません)。または、オーバーライド メソッドを呼び出すオーバーライド パスワードを入力することもできます。私は多くのデバッグステートメントを使用しましたが、実行中はメソッドでfalseに設定されています.whileループはそれを拾わないと思います. 申し訳ありませんが、コードは少し順不同です。問題のある while ループ、ループを終了させるメソッド、およびそのメソッドを呼び出す別のクラスのメソッド。

4

1 に答える 1

0

いくつかの問題、これはうまくいくはずです

 public static void passwordCheck(String pass){
        if(pass.equals(password)){
            correctPW = true;
            running = true;
        }
        else if(pass.equals(overKey)) {
            PWCoder.override(password);
        running = false;
    }
    }

また、成功時にループから抜け出すために、単に break を使用することを検討することもできます。

于 2013-03-05T16:52:51.773 に答える