我正在尝试编写验证系统,以验证用户是否输入了所需的字段。我似乎得到一个错误“'如果'声明是冗余的',有人可以帮助我解决这个问题吗?或者可能想出一种更好的方法来验证字段以检查字段是否为空。
String messageId = messageIdText.getText();
String subject = subjectText.getText();
String recipient = recipientText.getText();
String message = messageArea.getText();
boolean allFieldsCheck = false;
if (messageId.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
if (subject.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
if (recipient.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
if (message.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
答案 0 :(得分:3)
首先,您可以省略除最后一个if
语句之外的所有语句,因为它会覆盖allFieldsCheck
上的任何值。但即便如此,您也不需要if
语句 - 您可以直接将变量的布尔值分配给变量:
allFieldsCheck = !message.equals("");
在说明之后,我假设您要做的是验证没有字段等于""
。这可以通过一系列逻辑运算符而不是if
语句来完成:
boolean allFieldsCheck = !(messageId.equals("") ||
subject.equals("") ||
recipient.equals("") ||
message.equals(""));
答案 1 :(得分:1)
一个问题是3个if if语句是多余的,因为第4个if语句将覆盖它们所做的任何更改。
如果这些值中的任何一个为空,您似乎希望将allFieldsCheck指定为false。这将是一个更简单的一个班轮。基本上,如果任何值为空字符串,则将allFieldsCheck设置为false。
allFieldsCheck = !(messageId.equals("") || subject.equals("")|| message.equals("") || subject.equals(""))
答案 2 :(得分:0)
java中的布尔值可以这样声明:
boolean myBool = some condition;
实施例
boolean myBool = 5 + 1 == 6; // myBool = true
因此,您的if
语句可以压缩为:
allFieldsCheck = !messageId.equals("");
或者所有这些都压缩成一个:
allFieldsCheck = !messageId.equals("") && !subject.equals("") && !recipient.equals("") && !message.equals("");
答案 3 :(得分:0)
String messageId = messageIdText.getText();
String subject = subjectText.getText();
String recipient = recipientText.getText();
String message = messageArea.getText();
boolean allFieldsCheck = true;
if (messageId.equals("") || subject.equals("") || recipient.equals("") || message.equals("")) {
allFieldsCheck = false;
}
答案 4 :(得分:0)
所有if语句都可以替换为:
allFieldsCheck = ! messageId.equals("");
etc...
此外,只有你的最后一个if语句才会对allFieldsCheck
布尔变量产生影响;例如:
if (messageId.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
if (subject.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
if (recipient.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
if (message.equals("") ){
allFieldsCheck = false;
} else {
allFieldsCheck = true;
}
等同于
allFieldsCheck = ! messageId.equals("");
allFieldsCheck = ! subject.equals("");
allFieldsCheck = ! recipient.equals("");
allFieldsCheck = ! message.equals("");
只有最后一个语句才会对allFieldsCheck
你想要的是:
allFieldsCheck = !(messageId.equals("") || subject.equals("") || recipient.equals("") || message.equals("")) //false if any of the top returns `true`
答案 5 :(得分:0)
您可能没有预期的结果...您将每个支票设置为false和true,因此,如果第一次检查为false且上次检查为true,则最终结果为true 。我猜你正在尝试做类似以下的事情......
String messageId = messageIdText.getText();
String subject = subjectText.getText();
String recipient = recipientText.getText();
String message = messageArea.getText();
// Set to true
boolean allFieldsCheck = true;
// Foreach check and only set false so if one is bad, the allFieldsCheck is bad.
if (messageId.equals("")) allFieldsCheck = false;
if (subject.equals("")) allFieldsCheck = false;
if (recipient.equals("")) allFieldsCheck = false;
if (message.equals("")) allFieldsCheck = false;