Java中的嵌套条件
问题 给定以下代码:Java中的嵌套条件,java,Java,问题 给定以下代码: if (enforceLength && rawContents.length != recordLength) { 现在,如果enforceLength和rawContents与recordLength不匹配,它将返回true并触发我们的警告系统。但是,我们的一些recordLength比rawContents.length长HEADER\u DIFF字符 因此,我们希望在rawContents.length上添加或,以便它可以匹配recordLengt
if (enforceLength && rawContents.length != recordLength) {
现在,如果enforceLength
和rawContents
与recordLength
不匹配,它将返回true并触发我们的警告系统。但是,我们的一些recordLength
比rawContents.length
长HEADER\u DIFF
字符
因此,我们希望在rawContents.length
上添加或,以便它可以匹配recordLength
或recordLength+HEADER\u DIFF
问题
是否有一种简单的方法可以仅在if语句的第二部分上创建OR条件?i、 e.如果rawContents.length
不等于recordLength
,但如果recordLength
恰好比预期长,则不会触发警报
失败的尝试
一次尝试失败:
if (enforceLength && rawContents.length != recordLength + HEADER_DIFF
|| rawContents.length != recordLength)
非逻辑或逻辑结
if (enforceLength && rawContents.length != recordLength
&& rawContents.length != recordLength + HEADER_DIFF) {
也许消极的东西更容易理解
if (enforceLength && !(rawContents.length == recordLength
|| rawContents.length == recordLength + HEADER_DIFF)) {
非逻辑或逻辑结
if (enforceLength && rawContents.length != recordLength
&& rawContents.length != recordLength + HEADER_DIFF) {
也许消极的东西更容易理解
if (enforceLength && !(rawContents.length == recordLength
|| rawContents.length == recordLength + HEADER_DIFF)) {
如果两个条件均不正确,则失败:
if (enforceLength && !(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength))
如果两个条件均不正确,则失败:
if (enforceLength && !(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength))
如果我正确理解了您的问题,您只需要在OR周围使用括号,并将其替换为and,如下所示:
if (enforceLength && (rawContents.length != recordLength && rawContents.length != recordLength + HEADER_DIFF))
如果我正确理解了您的问题,您只需要在OR周围使用括号,并将其替换为and,如下所示:
if (enforceLength && (rawContents.length != recordLength && rawContents.length != recordLength + HEADER_DIFF))
您是否考虑过使用嵌套if
if (enforceLength)
{
if(test for header diff)
{
rawContents.length != recordLength + HEADER_DIFF
}
else
{
rawContents.length != recordLength)
}
}
它更复杂,但更难理解。您考虑过使用嵌套if吗
if (enforceLength)
{
if(test for header diff)
{
rawContents.length != recordLength + HEADER_DIFF
}
else
{
rawContents.length != recordLength)
}
}
这更复杂,但更难理解。这是一个典型的问题,通过对箭头模式的非理性恐惧,试图在一个if
语句中折叠太多内容
这肯定会更清楚
if (enforceLength) {
// Can be correct or out by HEADER_DIFF
if(!(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength)) {
}
}
这是一个典型的问题,通过对箭头模式的非理性恐惧,试图将太多内容折叠到一个if
语句中
这肯定会更清楚
if (enforceLength) {
// Can be correct or out by HEADER_DIFF
if(!(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength)) {
}
}
这不是嵌套的if。这甚至不是有效的语法。错过了最后一个},谢谢你指出。嵌套if的内容是伪代码,因为帖子中没有足够的信息来确定他们如何检查是否必须测试标题差异,而我当时没有能力发布注释。这不是嵌套if。这甚至不是有效的语法。错过了最后一个},谢谢你指出。嵌套if的内容是伪代码,因为帖子中没有足够的信息来确定他们是如何检查是否必须测试标题差异的,而我当时没有能力发布注释。@tobias_k实际上-IMHO-这样更好。现在,您可以将您的else
设置为if
,并准确了解您正在跟踪的备选方案。如果enforceLength
为false
或长度不好,则原始代码上的else
将被命中。@tobias_k实际上-IMHO-这会更好。现在,您可以将您的else
设置为if
,并准确了解您正在跟踪的备选方案。如果enforceLength
为false
或长度不正确,则原始代码上的else
将命中。