В Java все строки - это массивы символов с присоединенным к концу '\ 0' (также называемый нулевым завершающим символом). Например, если бы у меня был string str = "hello";
, на самом деле str
- это действительно массив из 6 символов: ['h', 'e', 'l', 'l', 'o', '\0']
.
flush()
просто удаляет '\ 0' после строки ">> "
. Основная проблема заключается в том, что вы прочитали Scanner
во вводе, прежде чем предлагать пользователю. Чтобы получить запрос перед запросом, переместите оператор println()
сверху.
System.out.println(">> "); //assuming this is your prompt
try(Scanner keyboard = new Scanner(System.in)) {
while (true) {
//some code
}
}
Другой вариант - изменить .nextline();
на .next();
. Разница между двумя значениями:
- nextLine (): продвигает этот сканер за текущую строку и возвращает пропущенный ввод.
- next (): находит и возвращает следующий полный токен от этого сканера.
Для получения дополнительной информации о Scanner
функциях вы можете прочитать их здесь