简体   繁体   English

在Java中使用while循环时出错

[英]Error using while loop in java

I'm a newbie in java from c# background. 我是来自C#背景的Java新手。 In c# when i want to make sure the user cannot does null data in the Console Application i make a loop like 在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();
    }
}

Now I want to implement the same in java. 现在,我想在Java中实现相同的功能。 I am using 我在用

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();
    }
}

But when a null value is entered, the output doesn't show the Enter your name again it only moves one line waiting for a value to be entered. 但是,当输入空值时,输出不会再次显示“ Enter your name ,它只会移动一行以等待输入值。

What am i doing wrong? 我究竟做错了什么?

Try using nextLine() instead. 尝试改用nextLine() next() only gets up to the next space, nextLine() gets the next linebreak. next()仅上升到下一个空格, nextLine()得到下一个换行符。 I vaguely remember this from my java class in college. 我在大学的Java课上模糊地记得这一点。

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

Instead use 改为使用

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

If you look at javadocs for equals, you will know what i am talking about. 如果您在javadocs中查找等号,您将知道我在说什么。 And also a hint, i started using buffred reader when i started coding in java 还有一个提示,当我开始用Java进行编码时,我开始使用buffred阅读器

You can use: 您可以使用:

while (pname == null || "".equals(pname))
{
    System.out.println("Enter your name : ");
    pname = scanner.nextLine();
}

I also faced similar type of problem once. 我曾经也遇到过类似的问题。 The problem is not in while loop. 问题不在while循环中。 It is in reusing same Scanner object. 它是在重复使用同一Scanner对象。 Try creating new Scanner object each time. 每次尝试创建新的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();
}

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM