此应用程序的目的是获取用户的全名,并将其拆分。打印结果。
if(nameParts.length < 2|| nameParts.length > 3)
在第二次或更长时间运行之后以某种方式从循环中获得控制权。我认为name
和nameParts
应该再次为它们分配值。为什么会发生这种情况,我该如何解决这个问题?
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String choice = "y";
System.out.println("Welcome to the name parser.\n");
while(choice.equalsIgnoreCase("y")) {
System.out.print("Enter a name: ");
String name = sc.nextLine();
String[] nameParts = nameSeperate(name);
if(nameParts.length < 2|| nameParts.length > 3) {
System.out.println("Please enter your full name or your first and last name.");
continue;
}
else if(nameParts.length == 2) {
System.out.println("First Name: " + nameParts[0]);
System.out.println("Last Name: " + nameParts[0]);
}
else {
System.out.println("First Name: " + nameParts[0]);
System.out.println("Middle Name: " + nameParts[1]);
System.out.println("Last Name: " + nameParts[2]);
}
System.out.println("Would you like to enter another name? (y/n)");
choice = sc.next();
}
}
这是输出:
Welcome to the name parser.
Enter a name: Alfons Pineda
First Name: Alfons
Last Name: Pineda
Would you like to enter another name? (y/n)
y
Enter a name: Please enter your full name or your first and last name.
Enter a name: Alfons Pineda
First Name: Alfons
Last Name: Pineda
Would you like to enter another name? (y/n)
n
答案 0 :(得分:0)
我不确定,但是对于第一次扫描,您使用sc.nextLine()
,而第二次扫描只使用sc.next()
。也许在第二个语句中使用sc.nextLine()
会有所帮助。可能是\n
未读取sc.next()
。
因此,在第二个循环中,第一次扫描只会读取换行符。