Java ';如果';声明是多余的
我试图编码一个验证系统,验证用户是否输入了所需的字段。我似乎遇到了一个错误“if”语句是多余的”有人能帮我解决这个问题吗?或者想出一种更好的验证字段的方法来检查字段是否为空Java ';如果';声明是多余的,java,if-statement,Java,If Statement,我试图编码一个验证系统,验证用户是否输入了所需的字段。我似乎遇到了一个错误“if”语句是多余的”有人能帮我解决这个问题吗?或者想出一种更好的验证字段的方法来检查字段是否为空 String messageId = messageIdText.getText(); String subject = subjectText.getText(); String recipient = recipientText.getText(); String message = messageArea.getTex
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;
}
java中的布尔值可以这样声明:
boolean myBool = some condition;
前
因此,您的if
语句可以压缩为如下所示:
allFieldsCheck = !messageId.equals("");
或者将它们全部压缩为一个:
allFieldsCheck = !messageId.equals("") && !subject.equals("") && !recipient.equals("") && !message.equals("");
java中的布尔值可以这样声明:
boolean myBool = some condition;
前
因此,您的if
语句可以压缩为如下所示:
allFieldsCheck = !messageId.equals("");
或者将它们全部压缩为一个:
allFieldsCheck = !messageId.equals("") && !subject.equals("") && !recipient.equals("") && !message.equals("");
首先,除了最后一个
if
语句外,您可以省略所有语句,因为它将覆盖您在allFieldsCheck
上的任何值。但即使如此,您也不需要if
语句-您可以直接将布尔检查的值分配给变量:
allFieldsCheck = !message.equals("");
说到这里,我假设您要做的是验证没有字段等于“
”。这可以通过一系列逻辑运算符而不是if
语句来完成:
boolean allFieldsCheck = !(messageId.equals("") ||
subject.equals("") ||
recipient.equals("") ||
message.equals(""));
首先,除了最后一个
if
语句外,您可以省略所有语句,因为它将覆盖您在allFieldsCheck
上的任何值。但即使如此,您也不需要if
语句-您可以直接将布尔检查的值分配给变量:
allFieldsCheck = !message.equals("");
说到这里,我假设您要做的是验证没有字段等于“
”。这可以通过一系列逻辑运算符而不是if
语句来完成:
boolean allFieldsCheck = !(messageId.equals("") ||
subject.equals("") ||
recipient.equals("") ||
message.equals(""));
所有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`
所有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`
一个问题是3条first if语句是多余的,因为第4条if语句将覆盖它们所做的任何更改 如果这些值中的任何一个为空,您似乎希望将allFieldsCheck赋值为false。这将是一个简单得多的单行线。基本上,如果任何值是空字符串,则allFieldsCheck设置为false
allFieldsCheck = !(messageId.equals("") || subject.equals("")|| message.equals("") || subject.equals(""))
一个问题是3条first if语句是多余的,因为第4条if语句将覆盖它们所做的任何更改 如果这些值中的任何一个为空,您似乎希望将allFieldsCheck赋值为false。这将是一个简单得多的单行线。基本上,如果任何值是空字符串,则allFieldsCheck设置为false
allFieldsCheck = !(messageId.equals("") || subject.equals("")|| message.equals("") || subject.equals(""))
您可能没有预期的结果。。。每次检查都将其设置为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;
您可能没有预期的结果。。。每次检查都将其设置为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;
如果(cond){x=true;}否则{x=false;}
等于x=cond
。此外,只有您的最终检查对整体结果有任何影响。显然,您希望在开始时设置allFieldsCheck=true
一次,并删除所有else
分支。还有allFieldsCheck=!messageId.isEmpty()
(等等)更优雅、更简短、更可读。请发布一个完整的示例,其他人可以自己尝试编译,如果(cond){x=true;}否则{x=false;}等同于x=cond,请标记获取错误的行
。此外,只有您的最终检查对整体结果有任何影响。显然,您希望在开始时设置allFieldsCheck=true
一次,并删除所有else
分支。还有allFieldsCheck=!messageId.isEmpty()
(等等)更优雅、更简短、更可读。请发布一个完整的示例,其他人可以自己尝试编译,并请标记获取错误的行,这些应该是allFieldsCheck=!stuff.equals(“”)代码>@tobias_k yup:)意外地放入了奇怪的逻辑:P@tobias_k它是fixed@tobias_k这个翻转该值,例如,如果messageId.equals(“”
为true,则表示allFieldsCheck为false(表示存在错误)。我知道是什么代码>是,并且它在一些代码块中丢失。我现在修好了。如果你的意思是相反的,可以随意颠倒,但那是错误的。应该是allFieldsCheck=!stuff.equals(“”)代码>@tobias_k yup:)意外地放入了奇怪的逻辑:P@tobias_k它是fixed@tobias_k这个翻转该值,例如,如果messageId.equals(“”
为true,则表示allFieldsCheck为false(表示存在错误)。我知道是什么代码>是,并且它在一些代码块中丢失。我现在修好了。如果你的意思是相反的,请随意反转,但那是错误的。作为首选,我发现它读起来更清楚,我通常表示!(a | | b | | c)
as!a&&!b&&!c
。最好*使用#isEmpty()
而不是#equals(“”
)。(*可读性更强)作为首选,我发现它读起来更清晰,我通常表示!(a | | b | | c)
as!a&&!b&&!c
。最好*在中使用#isEmpty()