I am testing Scanner and Bufferedreader. I tried to use BufferedReader after using Scanner.
However, if I close the scanner, an error occurs. Why is there an error?
I tried googling, but I don't understand.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class ScannerAndBufferedReaderTest2 {
public static void main(String[] args) throws IOException {
// Scanner
Scanner sc = new Scanner(System.in);
System.out.print("Enter number : ");
int in1 = sc.nextInt();
sc.close(); // <-- If I erase this part, there will be no error.
System.out.println("Your number : " + in1);
// BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Enter number: ");
bw.flush();
int in2 = Integer.parseInt(br.readLine());
br.close();
bw.write("Your number : " + String.valueOf(in2));
bw.flush();
bw.close();
}
}
/* Error
Exception in thread "main" java.io.IOException: Stream closed
at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:176)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:342)
at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:181)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
at test.Test2.main(Test2.java:27)
*/