我试图通过检查空值来验证Swing表单中的一些输入。但是,checkFirstName方法始终返回true。因此,例如,如果我在表单上留下firstname为空,即使该字段为空,它也将返回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字段为null。
答案 0 :(得分:3)
String
永远不会为空,String
将为空。检查firstName.isEmpty()
。我仍然建议你保持检查空值:
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所指出的,你可能想检查一下String是否至少有一个非空格:
if (firstName != null && !firstName.trim().isEmpty())
此外,您可以执行更复杂的验证 - 例如,如果您想确保修剪后用户名中没有空格。
答案 1 :(得分:1)
例如,如果我在表单上留下名字空白
您只是在检查null
,您还需要执行空("")
字符串检查。
应该是这样的:
if (firstName != null && !"".equals(firstName.trim()) {
答案 2 :(得分:0)
txtNCustomerFirstName.getText
方法返回一个空字符串。您可以更改checkFirstName
方法的if语句以检查空字符串:
if (firstName != null && !firstName.isEmpty()) {
如果您没有Java 6+,则可以使用firstName.length() > 0
代替isEmpty
。
答案 3 :(得分:0)
据我所知,你在saveNewCustomer()中调用的getText()方法将返回一个空字符串而不是null。
答案 4 :(得分:0)
因此,例如,如果我将第一个名称留在窗体上,它将会是空白 即使该字段为空,也返回true。
这是你的推理错误的地方。当您将文本字段留空时,getText()
会返回空字符串,即非空的""
。你应该检查空虚而不是null
。
if (!firstName.isEmpty()) { ... }
如果firstName
也可能是null
(例如,当它来自其他来源时),您应该事先检查一下:
if (firstName != null && !firstName.isEmpty()) { ... }
答案 5 :(得分:0)
正如其他答案所建议的那样,使用空字符串检查进行空检查。我会说在做空检查之前修剪前导空格和尾随空格,因为实际上你想要避免这种情况。
if (firstName != null && !firstName.trim().isEmpty()) { ... }