问题
I am on java 6. Using DataInputStream in = new DataInputStream(System.in);
to read user input. When the readLine() is deprecated. What is the work around for reading user value?
DataInputStream in = new DataInputStream(System.in);
int num;
try
{
num = Integer.parseInt(in.readLine()); //this works
num = Integer.parseInt(in); //just in doesnt work.
}
catch(Exception e)
{
}
please explain as it should when the readLine() is deprecated.
回答1:
InputStream
is fundamentally a binary construct. If you want to read text data (e.g. from the console) you should use a Reader
of some description. To convert an InputStream
into a Reader
, use InputStreamReader
. Then create a BufferedReader
around the Reader
, and you can read a line using BufferedReader.readLine()
.
More alternatives:
- Use a Scanner built round
System.in
, and callScanner.nextLine
- Use a Console (obtained from
System.console()
) and callConsole.readLine
回答2:
Deprecation and the alternatives is usually already explicitly explained in the javadocs. So it would be the first place to look for the answer. For DataInputStream
you can find it here. The readLine()
method is here. Here's an extract of relevance:
Deprecated. This method does not properly convert bytes to characters. As of JDK 1.1, the preferred way to read lines of text is via the
BufferedReader.readLine()
method. Programs that use theDataInputStream
class to read lines can be converted to use theBufferedReader
class by replacing code of the form:DataInputStream d = new DataInputStream(in);
with:
BufferedReader d = new BufferedReader(new InputStreamReader(in));
The character encoding can then be explicitly specified in the constructor of InputStreamReader
.
The Scanner which was introduced since Java 1.5 is also a good (and modern) alternative.
回答3:
The below doesn't work,
num = Integer.parseInt(in);
Instead you should use:
num = Integer.parseInt(in.readLine());
readLine()
will read an input of line until line break.
来源:https://stackoverflow.com/questions/5611387/datainputstream-deprecated-readline-method