需要一些 Java 运算符的帮助,出现 "bad operand type int for unary operator" 错误

Need a bit of assistance with Java operators, getting a "bad operand type int for unary operator" error

我有一些代码,我试图找出其中的逻辑。在这段代码中,我有三个布尔值:

在这种情况下,我只想在以下情况下做某事:

一个用户有一个帐户一个用户有一个帐户,他们的帐户是活跃的,或者他们的帐户不活跃,我没有跟踪不活跃的帐户。

一开始我以为是这样的:

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++中可以,因为boolean类型和integer类型之间存在隐式转换,但是在Java中没有这种隐式转换。 boolean 类型只是 true 或 false,整数类型只是一个整数,这就是 ! 运算符不适用于 int 的原因。

对于您的情况,您只需将 i, j, k 值替换为 boolArray[i], boolArray[j], boolArray[k] 即可,这应该会如您所愿。