簡體   English   中英

hasNextLine() 在 While 循環中總是返​​回 true

[英]hasNextLine() always returning true within While Loop

這個問題與我之前問過的關於同一程序的問題有關,可以在這里查看:

寫入文件代碼導致無限循環

我已經解決了上面的問題,並將函數重寫為 while 循環而不是 while 循環,但現在我遇到了相反的問題,即沒有任何內容寫入文件。 我已經插入了一個打印語句來告訴我 hasNextLine 的狀態,即使輸入了一個空行,它也總是返回 true,這是我希望編寫器終止的時候。

這是更新后的代碼:

import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.PrintWriter;;

public class Lab_Week8_WriteAStory {
    public static void main(String[] args) throws FileNotFoundException  {  

        Scanner whatToWrite = new Scanner (System.in);
        PrintWriter writing = new PrintWriter ("Read and Write Files/output.txt");

        while (whatToWrite.hasNextLine()){
            String writeToFile = whatToWrite.nextLine();
            writing.println(writeToFile);
            System.out.println (whatToWrite.hasNextLine());
        }

        writing.close();
        whatToWrite.close();
    }
}

檢查Scanner.hasNextLine()的文檔:

如果此掃描器的輸入中有另一行,則返回 true。 此方法可能會在等待輸入時阻塞 掃描儀不會通過任何輸入。

這就是正在發生的事情。 由於您使用System.in作為輸入源,該方法正在等待您的輸入,一旦您提供它,它就會返回 true 並繼續下一行,並且該過程會重復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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