Как мне сделать программу, которая принимает строку, но запрещает числа?

1

Я разрабатываю игру, и она запрашивает имя пользователя в начале, которое затем будет добавлено в 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)
  • 1
    stackoverflow.com/a/14967412/3908355
  • 1
    @gurinderhans эта ссылка противоположна тому, что он хочет.
Показать ещё 1 комментарий
Теги:
string
joptionpane
username

2 ответа

1
Лучший ответ

Я буду продолжать предлагать пользователю ввести действительную информацию, пока они этого не сделают.

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
  • 1
    Спасибо! Мне понадобилось так много времени, чтобы обернуть голову вокруг этого :) Я прошу прощения за то, что задал вопрос, на который "уже был дан ответ", но я не смог найти этот оригинальный пост, и ug_ в любом случае показал мне, как это сделать правильно. Спасибо за помощь, ребята!
1

Есть несколько способов, которыми вы могли бы достичь этого...

Ты мог...

Используйте JFormattedField...

Изображение 174551

Дополнительные сведения см. В разделе Использование форматированных текстовых полей.

Ты мог...

Используйте DocumentFilter, который позволит вам выполнять фильтрацию в реальном времени текста, применяемого к текстовому полю, и отклонять, если он не соответствует вашим требованиям.

Дополнительные сведения см. В разделе " Использование примеров документов и документов".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню