Sha*_*fox 0 java if-statement boolean
我正在尝试让我的程序检查播放器输入的名称,看它是否使用任何无效字符.在我看来,如何使其工作似乎是有道理的,但它似乎不适用于实际环境.当我运行它,并且我使用无效字符时,它将继续执行程序的下一部分.关于如何解决它的任何想法?
这是我的相关代码块:
if (!(nameInput.getText().equals(""))) {
boolean allow = true;
String check = nameInput.getText();
for (int i = 0;i>check.length();i++) {
if (check.charAt(i) == '`' || check.charAt(i) == '~' ||
check.charAt(i) == '!' || check.charAt(i) == '@' ||
check.charAt(i) == '#' || check.charAt(i) == '$' ||
check.charAt(i) == '%' || check.charAt(i) == '^' ||
check.charAt(i) == '&' || check.charAt(i) == '*' ||
check.charAt(i) == '(' || check.charAt(i) == ')' ||
check.charAt(i) == '_' || check.charAt(i) == '+' ||
check.charAt(i) == '=' || check.charAt(i) == '[' ||
check.charAt(i) == ']' || check.charAt(i) == '{' ||
check.charAt(i) == '}' || check.charAt(i) == ';' ||
check.charAt(i) == '\''|| check.charAt(i) == ':' ||
check.charAt(i) == '"' || check.charAt(i) == '<' ||
check.charAt(i) == '>' || check.charAt(i) == '?' ||
check.charAt(i) == ',' || check.charAt(i) == '.' ||
check.charAt(i) == '/' || check.charAt(i) == '\\'||
check.charAt(i) == '|' || check.charAt(i) == '1' ||
check.charAt(i) == '2' || check.charAt(i) == '3' ||
check.charAt(i) == '4' || check.charAt(i) == '5' ||
check.charAt(i) == '6' || check.charAt(i) == '7' ||
check.charAt(i) == '8' || check.charAt(i) == '9' ||
check.charAt(i) == '0') {
allow = false;
}
}
if (allow == true) {
player = new Player(check);
window.refresh();
mainMenu();
} else {
JOptionPane.showMessageDialog(window, "Invalid Name(Uses invalid Characters","Invalid!", JOptionPane.OK_OPTION);
}
} else {
JOptionPane.showMessageDialog(window, "Can Not Leave Name Blank!", "Missing Name!", JOptionPane.OK_OPTION);
window.refresh();
createPlayer();
}
}
Run Code Online (Sandbox Code Playgroud)
for(int i = 0;i>check.length();i++)
Run Code Online (Sandbox Code Playgroud)
你的for循环永远不会被输入,因为我不相信它String的长度可能是负面的......
你的意思是<代替吗?
此外,有一个明显更好的方法来检查有效的名称,而不是一个巨大的字符检查链.
一种方法是使用正则表达式; 查看Java的Pattern类和Google来学习正则表达式.这样你就可以减少你的loop-and-if-block(我想;我只是接受了字母字符,并且基于对怪物的快速浏览而拒绝了所有其他内容):
allow = String.matches("[a-zA-Z]{1,}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |