0

私はC#のバックグラウンドからのJavaの初心者です。C# で、ユーザーがコンソール アプリケーションで null データを実行できないようにしたい場合は、次のようなループを作成します。

static void Main(string[] args)
{
    Console.WriteLine("Enter your name : ");
    string name = Console.ReadLine();

    while (name == "")
    {
        Console.WriteLine("Enter your name : ");
        name = Console.ReadLine();
    }
}

今度はJavaで同じことを実装したいと思います。私は使っている

public static void main(String[] args) {
    // TODO code application logic here
    System.out.println("Enter your name : ");
    String pname;
    Scanner scan=new Scanner(System.in);
    pname=scan.next();

    while ("".equals(pname))
    {
        System.out.println("Enter your name : ");
        pname=scan.next();
    }
}

ただし、null 値が入力されると、出力は表示Enter your nameされず、値が入力されるのを待って 1 行だけ移動します。

私は何を間違っていますか?

4

4 に答える 4

0

私もかつて同様のタイプの問題に直面しました。問題は while ループではありません。同じ Scanner オブジェクトを再利用しています。毎回新しい Scanner オブジェクトを作成してみてください。

public static void main(String[] args) {
// TODO code application logic here
System.out.println("Enter your name : ");
String pname;
Scanner scan=new Scanner(System.in);
pname=scan.next();

while (pname.equals(""))
{
    System.out.println("Enter your name : ");
    scan = new Scanner(System.in);
    pname=scan.next();
}

}

于 2013-10-02T21:56:15.993 に答える
0

以下を使用できます。

while (pname == null || "".equals(pname))
{
    System.out.println("Enter your name : ");
    pname = scanner.nextLine();
}
于 2013-10-02T21:48:43.257 に答える
0
   while ("".equals(pname))
        {
           System.out.println("Enter your name : ");
           pname=scan.next();
        }

代わりに使用

     while (pname.equals(""))
     {
        System.out.println("Enter your name : ");
        pname=scan.next();
     }

equals の javadocs を見れば、私が話していることがわかるでしょう。また、ヒントとして、Java でコーディングを開始したときにバッファリング リーダーを使い始めました。

于 2013-10-02T21:46:10.233 に答える