如何制作一个带字符串但不允许数字的程序?

时间:2014-08-06 22:10:31

标签: java string joptionpane username

我正在开发游戏,它会在开始时要求输入用户名,然后将其添加到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)

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以通过多种方式实现这一目标......

你可以......

使用JFormattedField ...

Formatted Fields

有关详细信息,请参阅How to Use Formatted Text Fields

你可以......

使用DocumentFilter,这样您就可以对文本字段中应用的文本进行实时过滤,如果不符合您的要求则拒绝。

有关详细信息,请参阅Implementing a Document FilterDocumentFilter Examples