[英]Java Loop question about !scanner.nextLine() as condition
我現在正在學習用 mooc 編寫 Java 代碼,並且正在做一個你接受用戶輸入的任務(並用它做一些事情)。 如果用戶沒有輸入任何內容並進入,則程序/循環結束。
所以這是我做對的正確答案:
while (true) {
String sentence = scanner.nextLine();
if (sentence.equals("")) {
break;
}
}
但是在此之前我也嘗試過類似的東西:
while (!scanner.nextLine().equals("")) { // ...
為什么這種方法不起作用? 我看不出有什么問題。 (如果需要,下面是整個代碼)
import java.util.Scanner;
public class AVClub {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (!scanner.nextLine().equals("")) {
String sentence = scanner.nextLine();
String[] array = splitter(sentence);
for (int i = 0; i < array.length; i++) {
if (array[i].contains("av")) {
System.out.println(array[i]);
}
}
}
}
public static String[] splitter(String sentence) {
String[] array = sentence.split(" ");
return array;
}
}
嘗試使用scanner.hasNext()
來查看是否還有其他可以讀入的內容。您可以使用StringTokenizer
代替分割器方法,它將通過空格標記字符串。
您的代碼不起作用的原因是您調用 Scanner.nextLine() 兩次。 即使您的代碼:
while (.scanner.nextLine().equals(""))
是一個條件檢查,它讀入並繼續前進。 可以這樣想:掃描儀就像一個閱讀器。 當您調用 Scanner.nextLine() 時,圖書閱讀器會移動到該行並閱讀它。 當你再次調用它時,它讀取了一個空行。 例如,如果我輸入這個:
您的讀者將閱讀“我喜歡餡餅”並檢查它是否不是“”。 當它完成后,你得到了你的sentence
變量,你再次調用了這個方法,它讀入了 NEXT 行,它不存在。 所以你的代碼無法工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.