Java 找不到文件的结尾
我在试图从stdin中查找文件结尾时遇到了一个问题。 我正在尝试获取写入concil的所有数字,直到达到EOF: 一, 二, 三, 四, EOF 我的代码如下所示:Java 找不到文件的结尾,java,stdin,eof,Java,Stdin,Eof,我在试图从stdin中查找文件结尾时遇到了一个问题。 我正在尝试获取写入concil的所有数字,直到达到EOF: 一, 二, 三, 四, EOF 我的代码如下所示: public void readInput() { Scanner scanner = new java.util.Scanner(new InputStreamReader(System.in)).useDelimiter("n"); ... while (scanner.hasNextLine()) {
public void readInput() {
Scanner scanner = new java.util.Scanner(new InputStreamReader(System.in)).useDelimiter("n");
...
while (scanner.hasNextLine()) {
..
}
}
因此,当到达EOF时,它不会终止的问题。有什么想法吗?在
系统中阅读时。在中,您可以在Windows上使用CTRL-Z
,在*nix平台上使用CTRL-D
来发出EOF
的信号
此外,除非有特定要求,否则通常不需要使用分隔符。这可以简化为:
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
...
}
如果需要一些分隔符,那么使用分隔符无疑是一种好的做法。避免使用CTRL-Z
或CTRL-D
。这里,我使用了EOF
、文件结束
和文件结束
作为分隔符,您可以根据需要修改分隔符
Scanner sin = new Scanner(System.in);
CharSequence end1 = "end-of-file";
CharSequence end2 = "EOF";
CharSequence end3 = "End Of File";
ArrayList<String> Arr = new ArrayList<String>();
int i =0;
while(sin.hasNext())
{
Arr.add(sin.nextLine());
if( (Arr.get(i).contains(end1)) == true || (Arr.get(i).contains(end2)) == true || (Arr.get(i).contains(end3) ) == true )
{
i++;
break;
}
i++;
}
Scanner sin=新的扫描仪(System.in);
CharSequence end1=“文件结束”;
CharSequence end2=“EOF”;
CharSequence end3=“文件结束”;
ArrayList Arr=新的ArrayList();
int i=0;
while(sin.hasNext())
{
Arr.add(sin.nextLine());
如果((Arr.get(i).contains(end1))==true | |(Arr.get(i).contains(end2))==true | |(Arr.get(i).contains(end3))==true)
{
i++;
打破
}
i++;
}
如果您正在从stdin读取,您如何指示控制台输入的结束?你真的在输入“EOF”吗?顺便说一句,这是控制台,而不是议会:)要么按CTRL-Z/CTRL-D,要么按EOF