我想检查一些操作员条件,并根据我将分配一些值。以下是我的情况。
if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft") {
VSATSaving.IS_SUBMIT = 0;
VSATSaving.STATUS_ID = 1;
}
在我的checkIfUserRequesterApprover
中VSAT Requester
这两个条件仍然令人满意并进入内部。怎么可能?
答案 0 :(得分:4)
看起来像你的if表达式
(checkIfUserRequesterApprover == "VSAT Approver" && (IsDraftOrSave == "Save" || IsDraftOrSave == "Draft"))
答案 1 :(得分:0)
您需要添加括号以对条件中的表达式进行分组。
当你写:
if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft")
并且您的checkIfUserRequesterApprover是'VSAT Requester',它返回false。
由于Java开始从左侧开始评估表达式,并且您的第一个表达式为false,然后是&&第二个表达式,所以前两个表达式总是计算为false,后面跟着||和第三个表达式,这将使您的结果依赖于第三个表达式
(false&& false || false)=(false || false)= false
(false&& false || true)=(false || true)= true
(false&& true || false)=(false || false)= false
(false&& true || true)=(false || true)= true
答案 2 :(得分:-2)
使用括号正确组合条件。