从字段中获取文本但如果为空则执行此操作

时间:2013-07-12 14:44:24

标签: java if-statement equals jtextfield gettext

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

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

一样

3 个答案:

答案 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");
}