DataInputStream не поддерживает метод readLine()
Я на java 6. Используя DataInputStream in = new DataInputStream(System.in);
, чтобы читать ввод пользователя. Когда readLine() устарел. Какова работа для чтения значения пользователя?
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)
{
}
пожалуйста, объясните, как следует, когда readLine() устарел.
Ответы
Ответ 1
InputStream
является в основном двоичной конструкцией. Если вы хотите прочитать текстовые данные (например, с консоли), вы должны использовать Reader
некоторого описания. Чтобы преобразовать InputStream
в Reader
, используйте InputStreamReader
. Затем создайте BufferedReader
вокруг Reader
, и вы можете прочитать строку с помощью BufferedReader.readLine()
.
Другие варианты:
- Используйте
Scanner
, построенный вокруг System.in
, и вызовите Scanner.nextLine
- Используйте
Console
(полученный из System.console()
) и вызывайте Console.readLine
Ответ 2
Усталость и альтернативы обычно явно объясняются в javadocs. Так что это будет первое место для поиска ответа. Для DataInputStream
вы можете найти здесь здесь. Метод readLine()
здесь. Здесь выдержка релевантности:
Устаревшие. Этот метод неправильно преобразовывает байты в символы. Начиная с JDK 1.1, предпочтительным способом чтения строк текста является метод BufferedReader.readLine()
. Программы, которые используют класс DataInputStream
для чтения строк, могут быть преобразованы в класс BufferedReader
, заменив код формы:
DataInputStream d = new DataInputStream(in);
с:
BufferedReader d
= new BufferedReader(new InputStreamReader(in));
Кодировка символов может быть явно указана в конструкторе InputStreamReader
.
Scanner
, который был введен, поскольку Java 1.5 также является хорошей (и современной) альтернативой.
Ответ 3
Ниже не работает,
num = Integer.parseInt(in);
Вместо этого вы должны использовать:
num = Integer.parseInt(in.readLine());
readLine()
будет читать ввод строки до разрыва строки.