Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果任何函数调用返回false,则终止函数_Java_Android_Data Structures_Logic - Fatal编程技术网

Java 如果任何函数调用返回false,则终止函数

Java 如果任何函数调用返回false,则终止函数,java,android,data-structures,logic,Java,Android,Data Structures,Logic,这是一个Java函数,我在其中执行了验证,它检查表单的所有字段是否有效,并返回booleanvalue(valid-true或invalid-false)。如果任何字段无效,则整个表单无效。一切正常,但我想停止检查是否有任何函数返回false。所以我的意思是,如果isSharesDepositValid()返回false,那么它应该停止进一步检查函数并退出isFormValid()函数。如果返回true,则继续进行进一步检查。我可以为每个函数检查放置if语句,但我想知道是否还有其他最佳方法 pu

这是一个Java函数,我在其中执行了验证,它检查表单的所有字段是否有效,并返回
boolean
value(valid-true或invalid-false)。如果任何字段无效,则整个表单无效。一切正常,但我想停止检查是否有任何函数返回false。所以我的意思是,如果
isSharesDepositValid()
返回false,那么它应该停止进一步检查函数并退出
isFormValid()
函数。如果返回true,则继续进行进一步检查。我可以为每个函数检查放置
if语句
,但我想知道是否还有其他最佳方法

public boolean isFormValid() {
        boolean valid = isSharesDepositValid() && isPlotAmtDepositValid()
                && isDevFundDepositValid() && isConstructionDepositValid()
                && isOthersDepositValid() && isSharesDueValid(true) && isSarahDueValid()
                && isANSDueValid() && isDevFundDueValid() && isOthersDueValid();
        return valid;
    }
解决办法是:

public boolean isMoneyFormValid() {
        boolean valid = isSharesDepositValid() ;
        if (valid==false){
            return false;
        }
        valid = isPlotAmtDepositValid() && valid;
        if (valid==false){
            return false;
        }
        valid = isDevFundDepositValid() && valid;
        if (valid==false){
            return false;
        }
        ......
}

我认为这不是一种更好的方法,也可能是一种替代方法,因为Java知道
&&
是逻辑的,也就是说,如果其中一个布尔值是
false
,那么它就不关心其余的验证,只返回
false
。 它对
|
的作用完全相同,如果一个布尔值为
true
,则它不关心其余的布尔值并返回
true。

此外,您可以跳过该变量并简单地返回这些验证

public boolean isFormValid() {
    return isSharesDepositValid() && isPlotAmtDepositValid()
            && isDevFundDepositValid() && isConstructionDepositValid()
            && isOthersDepositValid() && isSharesDueValid(true) && isSarahDueValid()
            && isANSDueValid() && isDevFundDueValid() && isOthersDueValid();
}

您使用的是短路和运算符,所以这不是已经按照您想要的方式运行了吗?您认为您当前的代码到底在做什么?&&确保如果遇到错误,它将停止处理以下条件如果您通过在另一个返回false后调用的方法中设置断点来测试代码,那么对所有函数的AND操作调用将返回true或false…@RushiVanga不知道等待我将简化问题,但是如果您知道,那么您必须理解,如果
isSharesDepositValid()
返回
false
,那么之后就不会调用其他方法,它只返回
false
。不会。我在函数调用中调用了setter方法,setorry您是对的,我的setter方法中可能存在一些问题。我检查过了,没有进一步检查