在 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
它只移动一行等待输入值。
我做错了什么?
尝试改用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();
}
}