Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到文件的结尾_Java_Stdin_Eof - Fatal编程技术网

Java 找不到文件的结尾

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()) {

我在试图从stdin中查找文件结尾时遇到了一个问题。 我正在尝试获取写入concil的所有数字,直到达到EOF:

一,

二,

三,

四,

EOF

我的代码如下所示:

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