Я разрабатываю игру, и она запрашивает имя пользователя в начале, которое затем будет добавлено в txt файл и сохранено. Но проблема в том, что пользователь может писать абсолютно все. Их имена пользователей бесконечны и могут содержать специальные символы и числа, которые я не хочу. И я понятия не имею, как остановить это. Я пишу на Java
Код, который я использую для запроса имени пользователя, - это
player = new Player(level, 0, 0, input, JOptionPane.showInputDialog(this, "Please enter a username"));
А в конструкторе для игрока это просто
public Player(Level level, x, y, InputHandler input, String username)
Я буду продолжать предлагать пользователю ввести действительную информацию, пока они этого не сделают.
String username = null;
do {
username = JOptionPane.showInputDialog(null, "Please enter a username");
// check if the username is invalid
if(username.length() > 12 || username.length() < 4 || !username.matches("[a-zA-Z0-9]+")) {
// show the user why they cant enter that username
JOptionPane.showMessageDialog(null, "Username must be:\nbetween 4 and 12 characters characters\nonly letters and numbers", "Invalid Username", JOptionPane.INFORMATION_MESSAGE);
// do the loop again
username = null;
}
} while(username == null);
// at this point in the execution we can say that the username String is a valid username
Есть несколько способов, которыми вы могли бы достичь этого...
Используйте JFormattedField
...
Дополнительные сведения см. В разделе Использование форматированных текстовых полей.
Используйте DocumentFilter
, который позволит вам выполнять фильтрацию в реальном времени текста, применяемого к текстовому полю, и отклонять, если он не соответствует вашим требованиям.
Дополнительные сведения см. В разделе " Использование примеров документов и документов".