#java
Вопрос:
`Scanner scanner = new Scanner(System.in);
System.out.println("Enter your name:");
String userName = scanner.nextLine();
if (scanner.hasNextDouble()){
System.out.println("You can't enter numbers");
}`
Здесь я не могу напечатать «Вы не можете вводить цифры». Или есть ли какой-либо другой вариант ограничить пользователя вводом чисел?
Комментарии:
1. вы можете добавить проверку того, является ли это число не используемым
regex
внутриwhile
цикла.2. Вы не можете ограничить то, что пользователь может вводить. Они могут войти во все, что захотят. Все, что вы можете сделать, это повторять цикл до тех пор, пока пользователь не введет то, что вы хотите.
Ответ №1:
Вы можете попробовать что-то, как показано ниже
public static void main(String[] args) {
boolean validUsername = false;
String regexForNumbers = ".*\d.*";
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your name:");
while (!validUsername) {
String userName = scanner.nextLine();
if(userName.matches(regexForNumbers)){
System.out.println("Username Can not contain numbers");
System.out.println("Please Enter username again:");
}else{
validUsername = true;
}
}
}
Здесь String regexForNumbers = ".*\d.*";
будет проверено,содержит ли имя пользователя номер, и вы можете ожидать чего-то подобного,
Enter your name:
maneesha123
Username Can not contain numbers
Please Enter username again:
123
Username Can not contain numbers
Please Enter username again:
maneesha
Ответ №2:
Чтобы все было просто, используйте метод String#matches() с небольшим регулярным выражением (регулярным выражением), чтобы убедиться, что числовые цифры не были указаны. Регулярное "\D"
выражение делает именно это, например:
Scanner scanner = new Scanner(System.in);
String userName = "";
while (userName.isEmpty()) {
System.out.println();
System.out.print("Enter your User name: --> ");
userName = scanner.nextLine();
// Anything is acceptable 'except' numerical digits.
if (!userName.matches("\D ")) {
System.err.println("Invalid name supplied (" userName ")!.n"
"Numerical digits are not permitted! Try again...");
userName = "";
}
}
System.out.println("Acceptable: " userName);