我正在开发游戏,它会在开始时要求输入用户名,然后将其添加到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)
答案 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
...
有关详细信息,请参阅How to Use Formatted Text Fields
使用DocumentFilter
,这样您就可以对文本字段中应用的文本进行实时过滤,如果不符合您的要求则拒绝。
有关详细信息,请参阅Implementing a Document Filter和DocumentFilter Examples