hasNextLine()始终在While循环内返回true

这个问题与我之前问过的关于同一程序的问题相关,可以在这里查看:

Writing to a file code causing an endless 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();
    }
}
zlzlyw 回答:hasNextLine()始终在While循环内返回true

查看Scanner.hasNextLine()的文档:

  

如果此扫描仪的输入中还有另一行,则返回true。 此方法可能在等待输入时被阻止。扫描仪不会前进超过任何输入。

这就是正在发生的事情。由于您将System.in用作输入源,因此该方法正在等待您的输入,一旦您提供了输入,该方法将返回true,然后继续进行下一行,并重复该过程。

本文链接:https://www.f2er.com/2917814.html

大家都在问