我有一些代码正在尝试弄清楚其逻辑。在这段代码中,我有三个布尔值:
hasAccount
isInactive
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))))));
^
我该如何修正我的测试代码,以便正确测试所有不同的条件?
在Java中,不能!
在整数类型上使用运算符。在c ++中,由于布尔类型和整数类型之间的隐式转换,因此可以,但是在Java中,没有这样的隐式转换。一boolean
类就是真或假,并和整数类型仅仅是一个整数,这就是为什么!
运营商在一个int将无法正常工作。
在您的情况下,您可以仅i, j, k
使用boolArray[i], boolArray[j], boolArray[k]
和替换值,该值应该会按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句