C# 在java中使用while循环时出错

C# 在java中使用while循环时出错,c#,java,console,C#,Java,Console,我是一名c#背景的java新手。在c#中,当我想确保用户不能在控制台应用程序中执行空数据时,我会执行如下循环 static void Main(string[] args) { Console.WriteLine("Enter your name : "); string name = Console.ReadLine(); while (name == "") { Console.WriteLine("Enter your name : ");

我是一名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();
    }
}
但当输入空值时,输出不会再次显示
输入您的姓名
,它只移动一行等待输入值

我做错了什么?

尝试改用
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中的equals,你就会知道我在说什么。 还有一个提示,当我开始用java编写代码时,我开始使用buffred reader,您可以使用:

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

}

如何输入
null
值?@Joni只需按enter键,而不键入任何内容。这就是c#的用法。我犯了一个错误,“whileloop在java中工作不好”,这是一个有趣的标题,不是吗?我想知道,既然你承认自己是新手,你怎么会认为这门语言不是很好用呢?杰克,对不起,你能帮我编辑一下吗。只是不知道该用什么这不会有什么区别,因为
等于
是对称的。实际上,如果有可能
pname
实际上是
null
,则首选原始版本。这是不正确的。如果pname为NULL,则在第二种形式中,您将获得一个
NullPointerException
;-)我的回答冒犯了你吗?通常,当人们在结尾有几个
时,这意味着讽刺。(我很高兴不是在这种情况下lol)lol我从来不知道我打赌这是一个文化的东西。不管怎样,很高兴我能帮忙,祝你的项目好运。