0

我有许多需要输入数据的字段。这是一个酒店预订系统,因此如果未填写字段,则必须显示它们为空并且不填写就无法继续。我想要做的是从字段中获取文本,但如果它们为空白,则必须将所有字段文本设置为“*请填写所有字段”或显示一条消息。我有一些代码不起作用,因为如果字段中没有任何内容,它就无法获取文本。代码如下所示:

    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("")

4

3 回答 3

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;
}
于 2013-07-12T14:51:42.890 回答
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
}

此方法利用可变参数让您将参数视为一个数组,而无需添加额外的代码来显式创建一个。

于 2013-07-12T14:52:06.123 回答
0

您可以创建一个方法来验证您String的 s 在 varargs 风格中:

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");
}
于 2013-07-12T14:51:40.467 回答