我有许多需要输入数据的字段。这是一个酒店预订系统,所以如果字段没有填写,它必须显示它们是空的,不能填写它们就无法继续。我想要做的是从字段中获取文本,但如果它们是空白的,则必须将所有字段文本设置为“*请填写所有字段”或显示消息。 我有一些代码无法正常工作,因为如果字段中没有任何内容,它就无法获取文本。代码如下所示:
this.Firstname = NameF.getText();
this.Lastname = NameL.getText();
this.Country = Countr.getText();
this.IDtype = IDTy.getText();
this.PassportNo = PassNo.getText();
this.IDNo = IDNumber.getText();
this.Addr1 = Add1.getText();
this.Addr2 = Add2.getText();
this.AreaCode = Integer.parseInt(Area.getText());
this.TelNo = Tel.getText();
this.CellNo = Cell.getText();
this.Email = Em.getText();
}
if (this.Firstname.equals("") || this.Lastname.equals("") || this.Country.equals("") || this.IDtype.equals("") || this.IDNo.equals("") || this.Addr1.equals("") || this.Addr2.equals("") || this.AreaCode == 0 || this.TelNo.equals("") || this.CellNo.equals("") || this.Email.equals("")) {
JOptionPane.showMessageDialog(null, "Please fill in all fields");
}
不确定我是否应该在另一个问题中问这个问题,但是如果没有那么多||
运算符,是否有更简单的方法来制作if?就像if this.Firstname,this.Lastname,etc.equals("")
答案 0 :(得分:3)
你可以这样做。
public void validateFields () {
for (String field : getNonBlankFields()) {
if (field.equals("")) {
JOptionPane.showMessageDialog(null, "Please fill in all fields");
return;
}
}
}
Collection<String> nonBlankFields;
public Collection<String> getNonBlankFields () {
if (this.nonBlankFields != null) {
return this.nonBlankFields;
}
this.nonBlankFields = new ArrayList<String> ();
this.nonBlankFields.add(this.lastName);
// add all of the other fields
this.nonBlankFields.add(this.email);
return this.nonBlankFields;
}
答案 1 :(得分:1)
您可以通过创建一个在循环中为您进行检查的函数来完成此操作;
public boolean isAnyEmpty(String... strArr){
for(String s : strArr){
if(s.equals("")) return true;
}
return false;
}
然后用
调用它if(isAnyEmpty(this.Firstname, this.lastName, this.Country, /* rest of your strings */)){
//your code
}
此方法使用varargs让您将参数视为数组,而无需添加其他代码以显式创建参数。
答案 2 :(得分:0)
您可以创建一个方法来验证varargs风格的String
:
public boolean validateString(String ... stringsToValidate) {
for (String validString : stringsToValidate) {
if (...) { //logic to validate your String: not empty, not null, etc
return false;
}
}
return true;
}
然后就这样称呼它:
//add all the strings that must be validated with rules defined in validateString
if (!validateString(NameF.getText(), NameL.getText(), Countr.getText(), ...) {
JOptionPane.showMessageDialog(null, "Please fill in all fields");
}