在 java 中使用 while 循环时出错

本文关键字:循环 出错 while java | 更新日期: 2023-09-27 18:33:44

我是来自 c# 背景的 java 新手。在 c# 中,当我想确保用户无法在控制台应用程序中执行空数据时,我做了一个循环,例如

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

但是当输入空值时,输出不会再次显示Enter your name它只移动一行等待输入值。

我做错了什么?

在 java 中使用 while 循环时出错

尝试改用nextLine()next()只到达下一个空格,nextLine()获得下一个换行符。我依稀记得我在大学时的Java课上。

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

而是使用

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

如果你平等地看javadocs,你就会知道我在说什么。还有一个提示,当我开始使用java

您可以使用:

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

我也遇到过类似的问题。问题不在 while 循环中。它正在重用相同的扫描仪对象。尝试每次都创建新的扫描程序对象。

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

}