-1

これが私のコードです:

public static void nameset(){
    int no = 1;
    name = JOptionPane.showInputDialog(frame, "The last people who still had cake had to defend it with heir lives, No matter the cost.\nOne of those last people, was you. What is your name?", "",1);     
    if(name.equals("") || name.equals(JOptionPane.CANCEL_OPTION));{
        JOptionPane.showMessageDialog(frame,"Please tell me your name. I don't wanna have to exit out of the game about you.","Hey!",1);
        no++;
    }if (name.equals("") || name.equals(JOptionPane.CANCEL_OPTION)){
        if (no == 2){
            JOptionPane.showMessageDialog(frame, "Seriously? Again?! that's it..");
            if (name.equals(JOptionPane.CANCEL_OPTION)){
                System.exit(0);
            }else{
                System.exit(0);
            }
        }
    }
}

キャンセルオプションを押すと、再起動するように指示されます。ただし、キャンセルを押すと、コンソールにエラーが表示されます。だと思いますがname.equals(JOptionPane.CANCEL_OPTION)、よくわかりません。うまくいかない理由はありますか?助けてくれてありがとう。

4

2 に答える 2

0

キャンセル ボタンは常にnull返されます。公式の JavaDocを参照してください:

Returns:    user's input, or null meaning the user canceled the input

したがって、条件を次のように変更する必要があります。

if(name == null || name.equals(""))

ifまた、最初のステートメントの後にセミコロンを削除する必要があります! そうしないと、次のブロックが常に実行されます。

それが修正されると、実際には入力ダイアログをループしていないため、「3回ノーで終了」は機能しません。

于 2013-07-27T16:55:13.553 に答える