簡體   English   中英

Java 循環問題 about.scanner.nextLine() 作為條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM