我是来自c#background的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
,它只移动一行等待输入值。
我做错了什么?
答案 0 :(得分:1)
请尝试使用nextLine()
。 next()
只能到达下一个空格,nextLine()
会获得下一个换行符。我在大学的java课程中依稀记得这个。
答案 1 :(得分: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();
}
如果你看看javadocs的equals,你会知道我在说什么。 还有一个提示,当我开始用java编码时,我开始使用buffred reader
答案 2 :(得分:0)
您可以使用:
while (pname == null || "".equals(pname))
{
System.out.println("Enter your name : ");
pname = scanner.nextLine();
}
答案 3 :(得分: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();
}
}