0

我试图通过检查空值来验证来自 Swing 表单的一些输入。但是 checkFirstName 方法总是返回 true。因此,例如,如果我在表单上将名字留空,即使该字段为空,它也会返回 true。

这是我的两种方法,第一种在用户单击保存按钮时触发。

public void saveNewCustomer() throws SQLException, ClassNotFoundException {

        boolean dbOK = false;//boolean to check if data input is not null

        System.out.println(dbOK);
        String firstName = txtNCustomerFirstName.getText();
        String lastName = txtNCustomerLastName.getText();

        if (checkFirstName(firstName)) {
            dbOK = true;
        } else {
            lblNCustFirstNameError.setText("First Name Must be Entered");
            dbOK = false;
        }
        System.out.println(dbOK);

        if (dbOK) {
            dbConnector.insertSignup(firstName, lastName);
            System.out.println("Success");
        } else {
            System.out.println("Error");
        }
    }

    public boolean checkFirstName(String firstName) {
        boolean allOK = false;
        System.out.println(allOK);

        if (firstName != null) {
            allOK = true;
        } else {
            allOK = false;
        }
        return allOK;
    }

我是否做错了什么,因为这对我来说应该返回 false,因为 firstname 字段为空。

4

6 回答 6

3

String永远不会为空,将String是空的。检查firstName.isEmpty()。我仍然建议您也保留对 null 的检查:

public boolean checkFirstName(String firstName) {
    boolean allOK = false;
    System.out.println(allOK);

    if (firstName != null && !firstName.isEmpty()) {
        allOK = true;
    } else {
        allOK = false;
    }
    return allOK;
}

编辑:正如 Windle 所指出的,您可能想检查字符串是否至少有一个非空格:

if (firstName != null && !firstName.trim().isEmpty())

您还可以执行更复杂的验证 - 例如,如果您想确保在修剪后用户名中没有空格。

于 2013-02-07T14:49:32.187 回答
1

因此,例如,如果我在表格上将名字留空

您只是在检查null,还需要进行空("")字符串检查。

它应该是这样的:

if (firstName != null && !"".equals(firstName.trim()) {
于 2013-02-07T14:50:17.430 回答
0

txtNCustomerFirstName.getText方法返回一个空字符串。您可以更改checkFirstName方法的 if 语句以检查空字符串:

if (firstName != null && !firstName.isEmpty()) {

如果您没有 Java 6+,则可以firstName.length() > 0使用isEmpty.

于 2013-02-07T14:50:40.277 回答
0

据我所知,您在 saveNewCustomer() 中调用的 getText() 方法将返回一个空字符串而不是 null。

于 2013-02-07T14:51:09.940 回答
0

因此,例如,如果我在表单上将名字留空,即使该字段为空,它也会返回 true。

这就是你的推理错误的地方。当您将文本字段留空时,getText()返回一个空字符串,即不""​​null。您应该检查空虚而不是null.

if (!firstName.isEmpty()) { ... }

如果firstName也可能null(例如,当它来自另一个来源时),您应该事先检查:

if (firstName != null && !firstName.isEmpty()) { ... }
于 2013-02-07T14:53:16.400 回答
0

正如其他答案所建议的那样,使用空字符串检查进行空检查。我会说在进行空检查之前还要修剪前导和尾随空格,因为实际上您想避免这种情况。

if (firstName != null && !firstName.trim().isEmpty()) { ... }
于 2013-02-07T14:57:23.510 回答