Я пробовал принимать c как String. Тем не менее, это не всегда будет работать в каждом случае, поскольку другой метод, который я вызываю из своего метода, требует char в качестве входных данных. Поэтому я должен найти способ явно использовать char в качестве входных данных.
Есть какая-нибудь помощь?
Переведено автоматически
Ответ 1
Вы могли бы взять первый символ из Scanner.next:
charc= reader.next().charAt(0);
Чтобы использовать ровно один символ, вы могли бы использовать:
charc= reader.findInLine(".").charAt(0);
Чтобы использовать строго один символ, вы могли бы использовать:
charc= reader.next(".").charAt(0);
Ответ 2
Настройка сканера:
reader.useDelimiter("");
После этого reader.next() вернет односимвольную строку.
Ответ 3
Не существует метода API для получения символа от сканера. Вы должны получить строку с помощью метода scanner.next() и вызвать String.charAt(0) возвращаемую строку.
Вызовите next() на сканере и извлеките первый символ строки (например, charAt(0)) Если вы хотите прочитать остальную часть строки как символы, выполните итерацию по оставшимся символам в строке. В других ответах есть этот код.
Используйте setDelimiter(""), чтобы установить разделитель в пустую строку. Это приведет к next() маркированию в строки длиной ровно в один символ. Таким образом, вы можете повторно вызывать next().charAt(0) для повторения символов. Затем вы можете установить разделитель в исходное значение и возобновить сканирование обычным способом!
Используйте Reader API вместо Scanner API. Метод Reader.read() обеспечивает считывание одного символа из входного потока. Например:
Readerreader=newInputStreamReader(System.in); intch= reader.read(); if (ch != -1) { // check for EOF // we have a character ... }
При чтении из консоли через System.in ввод обычно буферизуется операционной системой и "передается" приложению только тогда, когда пользователь вводит ввод. Итак, если вы хотите, чтобы ваше приложение реагировало на отдельные нажатия клавиатуры, это не сработает. Вам нужно будет выполнить некоторые действия в машинном коде для конкретной ОС, чтобы отключить или обойти буферизацию строк для консоли на уровне ОС.