Many people asked question like that but this one is a little bit different. Here is the code:
public static BufferedReader reader;
public static String read
Closing the BufferedReader
closes System.in
. You shouldn't close it at all, and you shouldn't keep creating a new one either: you will lose data. Use the same one for the life of the process.
Because System.in
is same Object
(public final static InputStream in;
of System
class) both method calls are using, closing in one method will automatically close System.in
for other method. You should close the BufferedReader
from outside(as I can see it's public
) the method once you finish calling readString
and so it will ultimately close underlying System.in
.