简要说明一下,我应该让用户输入该名称 收件人的邮件,然后让他们进入邮件正文,这可以 有多条线。如果他们输入一个空行,则消息正文结束 他们可以在交换机中选择另一个案例。
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
使用两个不同的扫描仪对象,但也没有运气。
答案 0 :(得分:2)
您应该将next
替换为nextLine
。 next
,正如文档所述,如果匹配从指定字符串构建的模式,将返回下一个标记,这不是您想要的。
尝试以下方法:
System.out.println("Recipient: ");
recip = menuScan.nextLine();
m = new Message(user,recip);
System.out.println("Enter message. Blank line to quit.");
mbody = menuScan.nextLine();
while(!mbody.equals("")) {
m.append(mbody);
mbody = menuScan.nextLine();
}
ms.deliver(m);
System.out.println("Messgae sent.");
答案 1 :(得分:0)
我已尝试过这段代码
System.out.println("Enter message. Blank line to quit.");
mbody = menuScan.nextLine();
while (!mbody.equals("")) {
mbody = menuScan.next();
m.append(mbody);
}
稍微改变一下
System.out.println("Enter message. Blank line to quit.");
mbody = menuScan.nextLine();
while (!mbody.equals("")) {
m.append(mbody);
mbody = menuScan.nextLine();
}
这样循环就会按预期执行和退出。 我使用过java.util.Scanner