简要解释一下,我应该让用户输入消息的收件人名称,然后让他们输入消息正文,可以 有多行。如果他们输入一个空白行,则消息正文结束,并且他们可以在交换机中选择另一个案例。(Java)退出While循环在空行开关的情况下
case 'S':
case 's':
if(user.equals(" ")) {
System.out.println("No user logged in.");
} else {
System.out.println("Recipient: ");
recip = menuScan.next();
m = new Message(user,recip);
System.out.println("Enter message. Blank line to quit.");
mbody = menuScan.nextLine();
while(!mbody.equals("")) {
mbody = menuScan.next();
m.append(mbody);
}
ms.deliver(m);
System.out.println("Messgae sent.");
}
break;
但是就像现在一样,while循环被完全跳过。我试过将recip
更改为menuScan.nextLine()
,mbody
至menuScan.next()
和.nextLine()
,但唯一发生的其他事情是邮件正文永远持续。
我也尝试过使用两个不同的扫描仪对象recip
和mbody
,但没有运气。
使用条件代替 – Gaktan
的可能的复制[跳跃nextLine()使用后的next(),nextInt()或其它nextFoo()方法](http://stackoverflow.com/questions/13102045/skip-nextline-after-using-next-nextint-or-other-nextfoo-methods) –