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