我需要说的是,如果按钮被禁用时输入(文本字段)为空,则打印一条消息。如果输入中的某个字符不等于“合法”列表中的某个元素,则打印另一条错误消息。如果输入中的所有字符都正常,则将它们添加到某个列表并打印消息msg
String[] legal={"a", "b", "c", "d" ,"e" ,"f" ,"g" ,"h" ,"i" ,"j" ,"k" ,"l" ,"m"
,"n","o","p","q","r","s","t","u","w","x","y","z","-","_"};
if(e.getSource() == add){
if (txt.getText().equals("")){
content.removeAll();
content.add(empty);
content.revalidate();
}
String[] splited = txt.getText().toLowerCase().split("");
for (int t=0;t<splited.length;t++) {
for (int u=0;u<legal.length;u++){
if(splited[t] != legal[u]){
content.removeAll();
content.add(check);
content.revalidate();
}
else if(splited[t].equals( legal[u])){
content.removeAll();
list.add(txt.getText());
content.add(msg);
content.revalidate();
}
}
}
}
答案 0 :(得分:4)
让我们暂时取消用户界面。
要测试String
是否为空,根据您认为空String
的内容,您有多种选择,例如......
if (text == null || text.trim().isEmpty()) {...}
当删除前导和尾随空格时,将捕获String
值为null
或0
长度的事件。
要检查String
是否包含有效的字符集,使用API提供的正则表达式功能会更简单,例如......
if (text.matches("[a-z\\-_]+")) {
System.out.println("Matches");
}
将匹配a
和z
以及_
,-
字符之间的所有字符。这意味着String
必须为小写;)
答案 1 :(得分:2)
您的代码中存在问题:
if(splited[t] != legal[u]){
您无法使用==
和!=
来比较字符串。相反,你必须检查:
if(!splited[t].equals(legal[u])){
此外,您的逻辑可以简化为一个案例和其他案例:
if(splited[t].equals(legal[u])){
// it is legal
} else {
// it is not legal
}
也就是说,有更简单的方法可以做到这一点。例如,您可以使用String.charAt()
直接访问角色,而无需使用split("")
。您也可以使用String.toCharArray()
直接将String
转换为char[]
。
但是,您过度使用String
(例如,String[]
可能真的是char[]
)。
您也可以非常轻松地使用正则表达式而不使用所有这些String
数组并进行拆分,例如参见String.matches()
:
if (txt.matches("[a-zA-Z_-]+")) {
// string is legal
} else {
// string is not legal
}