我在尝试从stdin找到文件结尾时遇到问题。 我试图获得所有写入concil的数字,直到达到EOF:
1
2
3
4
EOF
我的代码如下:
public void readInput() {
Scanner scanner = new java.util.Scanner(new InputStreamReader(System.in)).useDelimiter("n");
...
while (scanner.hasNextLine()) {
..
}
}
所以问题是它在到达EOF时不会终止。有什么想法吗?
答案 0 :(得分:2)
从System.in
阅读时,您可以在Windows上使用CTRL-Z
,在* nix平台上使用CTRL-D
来发信号通知EOF
。
除非有特定要求,否则通常也不需要使用分隔符。这可以简化为:
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
...
}
答案 1 :(得分:0)
如果需要一些分隔符,绝对使用分隔符是一个很好的做法。避免使用CTRL-Z
或CTRL-D
。在这里,我使用EOF
,End Of File
和end-of-file
作为分隔符,您可以根据要求修改分隔符。
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++;
}