Во-первых, вы не должны использовать readLine
на Android. Этот метод считывает из стандартного потока ввода, что имеет смысл в консольном приложении, но не в Android, поскольку это не тот способ, которым ваш пользователь взаимодействует с приложением (см. Также здесь и здесь ).
Вместо этого вы, вероятно, захотите создать EditText
в своем пользовательском интерфейсе, в который пользователь может вводить данные, и прочитать значение из него, используя getText
.
Буквальное объяснение вашего исключения: если посмотреть на источник , то readLine
использует декодер, возвращаемый Charset.defaultCharset().newDecoder()
в своей реализации, и требует этого CharsetDecoder
работать с одним символом на байт - у реализации, возвращаемой в Android, максимум 2 символа на байт, поэтому вызов require
в реализации readLine
вызывает исключение.