[英](Java) Exiting While Loop In Switch Case With Empty Line
為了簡要說明,我假設讓用戶輸入郵件收件人的名稱,然后讓他們輸入郵件正文,該正文可以有多行。 如果他們輸入空白行,則消息正文結束,他們可以在開關中選擇其他情況。
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()
,將menuScan.next()
mbody
為menuScan.next()
和.nextLine()
,但唯一發生的另一件事是消息正文永久存在。
我也嘗試過為recip
和mbody
使用兩個不同的Scanner對象,但也沒有運氣。
您應該用nextLine
替換next
。 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.");
我已經試過了這段代碼
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.