0

stdin からファイルの終わりを見つけようとしているときに問題に直面しています。EOF に到達するまで、concil に書き込まれるすべての数字を取得しようとしています。

1

2

3

4

EOF

私のコードは次のようになります。

public void readInput() {
    Scanner scanner = new java.util.Scanner(new InputStreamReader(System.in)).useDelimiter("n");
    ...
    while (scanner.hasNextLine()) {
    ..
    }    
}

そのため、EOF に到達しても終了しないという問題があります。何か案は?

4

2 に答える 2

2

から読み取る場合、Windows および*nix プラットフォームで をSystem.in使用して、 .CTRL-ZCTRL-DEOF

また、特別な要件がない限り、通常は区切り文字を使用する必要はありません。これは次のように簡略化できます。

Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
   System.out.println(scanner.nextLine());
   ...
}
于 2012-12-23T18:08:14.020 に答える
0

区切り文字が必要な場合は、必ず区切り文字を使用することをお勧めします。CTRL-Zまたはの使用を避けるCTRL-D。ここでは、 を使用EOFEnd 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++;
        }
于 2015-06-08T01:57:30.807 に答える