【发布时间】:2020-07-11 17:52:19
【问题描述】:
我有一些代码正在尝试找出其逻辑。在这段代码中,我有三个布尔值:
-
有帐户
-
不活动
-
trackInactive
在这种情况下,我只想在以下情况下做某事:
一个用户有一个帐户或一个用户有一个帐户,他们的帐户是活跃的,或者他们的帐户是不活跃的,我没有跟踪不活跃的帐户。
一开始我以为会是这样的:
if(hasAccount ^ (hasAccount && (!isInactive || !trackInactive))){
// Do something here ...
}
我尝试编写一些代码来测试所有输入,看看哪个条件会给我正确的输出。这是我所拥有的:
import java.util.Locale;
public class BoolTest {
public static void main(String[] args){
boolean[] boolArray = {false,true};
// WHERE:
// A -or- i = hasAccount
// B -or- j = isInactive
// C -or- k = trackInactive
System.out.println("+---+---+---++---+");
System.out.println("| A | B | C || X |");
System.out.println("+---+---+---++---+");
for(int i=0; i<boolArray.length; i++){
for(int j=0; j<boolArray.length; j++){
for(int k=0; k<boolArray.length; k++){
System.out.println(String.format(Locale.US, "| %s | %s | %s || %s |", i, j, k, ((i ^ (i && (!j || !k))))));
}
}
}
System.out.println("+---+---+---++---+---+---+");
}
}
但是,当我运行它时,我得到了这些错误:
error: bad operand type int for unary operator '!'
System.out.println(String.format(Locale.US, "| %s | %s | %s || %s |", i, j, k, ((i ^ (i && (!j || !k))))));
^
error: bad operand type int for unary operator '!'
System.out.println(String.format(Locale.US, "| %s | %s | %s || %s |", i, j, k, ((i ^ (i && (!j || !k))))));
^
如何修复我的测试代码,以便正确测试所有不同的条件?
【问题讨论】:
-
当你需要一个布尔值时,似乎你只需要用 boolArray[i], boolArray[j], boolArray[k] 替换 i,j,k。
-
成功了...谢谢!