Java 如何在EOF之前读取标准数据

Java 如何在EOF之前读取标准数据,java,java.util.scanner,Java,Java.util.scanner,我需要一个简单的解决方案来读取这个输入 ==*====*==== ===@=== **@@@==*@@=*@*= *=*=*=*=*=*= ==*@===*=*@= 我尝试过这样做,但每次读取输入时都不会结束,而是存储了字符串值。我需要在阅读后添加代码,这就是为什么while应该结束,我可以继续我的代码 Scanner sc=new Scanner(System.in); while(true){ if (!sc.hasNextLine()) { break;

我需要一个简单的解决方案来读取这个输入

==*====*====
===@===
**@@@==*@@=*@*=
*=*=*=*=*=*=
==*@===*=*@=
我尝试过这样做,但每次读取输入时都不会结束,而是存储了字符串值。我需要在阅读后添加代码,这就是为什么while应该结束,我可以继续我的代码

Scanner sc=new Scanner(System.in);
while(true){
    if (!sc.hasNextLine()) {
        break;
    }
    String sor=sc.nextLine();
}

我提前感谢您的帮助,请让我理解为什么while没有中断。

我相信您不需要在此处指定if(),因为它已经在while()中得到验证。 如果输入是从一个文件中读取的,它应该工作得非常好。如果您正在从其他输入流读取它,它应该终止该行

 Scanner sc=new Scanner(System.in);
    while(sc.hasNextLine()){
        String sor=sc.nextLine();
    }

这听起来可能很愚蠢,但你在最后一次输入后是否“按Enter键”?这里你输入的是System.in,它是一种无限的输入流。你需要做的是不要使用hasNextLine。而是在输入结束后发送一些控制序列,如CTRL+D或字符串匹配,如“停止”或“结束”,并用于退出循环。感谢您的回答,但是我正在寻找在原始行之后不需要输入的内容。还有,是的,我正在按enter:D。如果您将文件流作为扫描仪的输入,您的代码将正常工作。它似乎正常工作。顺便说一句,为什么不使用
while(sc.hasNextLine())
而不是带有if语句和
break的
while(true)