Я пытаюсь проверить ввод пользователя при появлении запроса на ввод имени, чтобы принимались только буквы, однако, когда я это делаю, мне приходится вводить имя дважды, пока не будет напечатана следующая строка.
Это мой код:
System.out.println("Enter First Name");
queueArray[last].setfName(in.next().toUpperCase());
while(!in.next().matches("[a-zA-Z,]+")){
System.out.println("Invalid Input");
System.out.printLn("Enter First Name");
queueArray[last].setfName(in.next().toUpperCase());
}
Я не уверен, какая часть кода вызывает эту проблему.
Сначала поместите
in.next()
в переменную, прежде чем проверять, соответствует ли она чему-либо. Что еще более важно, научитесь проходить мысленно (или на бумаге) по своему коду и визуализировать то, что он делает во время выполнения. Это необходимый навык, который вам нужно улучшить, если вы хотите прогрессировать.Вы звоните
next()
один раз по линииwhile
и еще раз по линииsetfName
. Каждый вызовnext
получает новый ввод.Я рекомендую вам прочитать "Как отлаживать небольшие программы"
@HovercraftFullOfEels Спасибо за совет, буду иметь в виду.