(Java) 在带有空行的 Switch Case 中退出 While 循环
(Java) Exiting While Loop In Switch Case With Empty Line
简单解释一下,我应该让用户输入
消息的收件人,然后让他们进入消息正文,这可以
有多条线。如果他们输入一个空行,则消息正文结束并且
他们可以 select 切换另一个案例。
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
使用两个不同的 Scanner 对象,但也没有成功。
我试过你的这段代码
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
您应该将 next
替换为 nextLine
。 next
,如文档所述,returns 下一个标记,如果它匹配从指定字符串构造的模式 ,这不是您想要的。
尝试以下操作:
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.");
简单解释一下,我应该让用户输入 消息的收件人,然后让他们进入消息正文,这可以 有多条线。如果他们输入一个空行,则消息正文结束并且 他们可以 select 切换另一个案例。
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
使用两个不同的 Scanner 对象,但也没有成功。
我试过你的这段代码
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
您应该将 next
替换为 nextLine
。 next
,如文档所述,returns 下一个标记,如果它匹配从指定字符串构造的模式 ,这不是您想要的。
尝试以下操作:
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.");