0

ユーザーが入力ダイアログ ボックスに何も入力しないと、以下のループが終了します。私はコードをデバッグしましたが、ユーザーが何も入力しない場合、実際の名前は "" です。

while(name == "" || name == null){
        name = JOptionPane.showInputDialog("Enter your name:");
    }

また、入力ダイアログを含むウィンドウが閉じられたりキャンセルされたりしても、プログラムはループを終了しません。

誰かが私に洞察を提供できますか?

4

5 に答える 5

2

文字列を と比較しないでくださいname == """".equals(name)あなたの場合でも or を使用してくださいname.isEmpty()(Java 6以降で利用可能)。

==オブジェクトの値ではなく、参照を比較するために使用されます。詳細はこちら

コードを次のように変更します。

while(name == null || name.isEmpty()){
    name = JOptionPane.showInputDialog("Enter you're name:");
}
于 2013-02-08T17:49:15.670 に答える
1

==のを比較するためにString使用しないでくださいJava

メソッドを使用しequals(String)ます。

次のリンクを参照してください

于 2013-02-08T17:50:43.920 に答える
0

文字列の比較をやめて、Apache Commons Lang StringUtilsクラスの使用を開始します。null を適切に処理し、十分にテストされています。あなたが使用したい、StringUtils.isBlamk(name)またはStringUtils.isEmpty(name)

于 2013-02-08T17:56:22.997 に答える
0

「==」または「等しい」を使用すると大きな違いがあります。確実に equalsIgnoreCase() も使用してみてください

while(name == null || name.equalsIgnoreCase("")){
        name = JOptionPane.showInputDialog("Enter you're name:");
    }
于 2013-02-08T17:51:34.840 に答える