Java hasNextLine()在While循环中始终返回true
这个问题与我之前提出的关于同一节目的问题相关联,可以在这里查看: 我已经修复了上面的问题,并将函数重写为while循环,而不是do-while,但现在我遇到了相反的问题,即没有任何内容写入文件。我插入了一个print语句来告诉我hasNextLine的状态,它总是返回true,即使输入了一个空行,也就是我希望编写器终止的时候 以下是更新的代码:Java hasNextLine()在While循环中始终返回true,java,while-loop,java.util.scanner,filewriter,Java,While Loop,Java.util.scanner,Filewriter,这个问题与我之前提出的关于同一节目的问题相关联,可以在这里查看: 我已经修复了上面的问题,并将函数重写为while循环,而不是do-while,但现在我遇到了相反的问题,即没有任何内容写入文件。我插入了一个print语句来告诉我hasNextLine的状态,它总是返回true,即使输入了一个空行,也就是我希望编写器终止的时候 以下是更新的代码: import java.util.Scanner; import java.io.FileNotFoundException; import java.
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并继续下一行,并且该过程将重复进行。请查看有关Scanner.hasNextLine的文档: 如果此扫描仪的输入中有另一行,则返回true。此方法在等待输入时可能会阻塞。扫描仪不会超过任何输入
这就是正在发生的事情。由于您使用System.in作为输入源,因此该方法正在等待您的输入,一旦您提供输入,它将返回true并继续下一行,并且该过程将重复自身。hasNextLine不会测试下一行是否为空。它测试是否有下一行。扫描仪从System.in读取的数据总是有下一行,除非它已关闭。hasNextLine不会测试下一行是否为空。它测试是否有下一行。除非关闭,否则扫描仪从System.in读取的数据将始终有下一行。