-3

Java の PrintWriter について質問があります。ここに私のコードを示します。

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.PrintWriter;
    import java.util.Scanner;


public class Out {

public static void main(String[] args) {

  try{
File a=new File("C:/Users/Acer/Desktop/abc.txt");
PrintWriter out=new PrintWriter(a);
Scanner c=new Scanner(System.in);


while(c.hasNextInt()){
    out.printf("%d", c.nextInt());
    out.println();
c.close();  
}
out.close();
System.out.println("input written into file successfully!");
   }
    catch(FileNotFoundException e){
System.out.println("The file not found");


   }
}

   }

プログラムを実行した後、ファイル abc の内容が失われ、スキャナ機能を実行して 1 2 3 4 5 と入力すると、次のエラーが表示されます。

    1 2 3 4 5
    Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.util.Scanner.ensureOpen(Unknown Source)
at java.util.Scanner.hasNext(Unknown Source)
at java.util.Scanner.hasNextInt(Unknown Source)
at java.util.Scanner.hasNextInt(Unknown Source)
at Out.main(Out.java:17)

出力することになっています:

     1
     2
     3
     4
     5

しかし、プログラムがファイルを見つけられないようです。どの部分が間違っているのかわかりません。助けてください。乾杯!

4

3 に答える 3

2

execption を提供する 閉じた オブジェクトでhasNextInt()メソッドを呼び出しています。Scannerc

ループの外にあるc.close();はずですwhile

于 2013-09-24T12:23:43.403 に答える
1

Scannerループ自体の中でオブジェクトを閉じています!

ループの外に置いてみてください。

while(c.hasNextInt()){
    out.printf("%d", c.nextInt());
    out.println();
}
c.close();  

期待される出力は次のとおりです。

input written into file successfully!

そしてそうではありません:

1
2
3
4
5
于 2013-09-24T12:24:35.083 に答える
0

これを試して

while(c.hasNextInt()){
out.printf("%d", c.nextInt());
out.println();
}
 c.close();  
于 2013-09-24T12:25:29.760 に答える