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)
?