如何在java中反转布尔数组?

时间:2017-01-25 01:22:53

标签: java arrays boolean

我想反转一个布尔数组。 free是数组。这是我的代码:

public boolean[][] free = new boolean[6][6];

free = !free;

我收到一条错误消息,说明运算符!未定义。我该怎么办?

EDIT 它不是空的。我只想反转这些值。

public boolean[][] free = new boolean[6][6];
    void initFree(State s) {

        for (int i = 0; i < nbcars; i++){
            if (horiz[i]){

                for (int j = 0; j < (len[i]-1); j++)        
                    free[moveon[i]][s.pos[i]+j]=true;


            }
            if (!horiz[i]){

                for (int j = 0; j < (len[i]-1); j++)        
                    free[s.pos[i]+j][moveon[i]]=true;
            }
        }
        free = !free;
    }

3 个答案:

答案 0 :(得分:2)

你得到操作员!是不确定的,因为Java没有定义!运算符在二维布尔数组上。

你可以实现你想要的一种方法是迭代每个值,然后使用!操作

for(int i=0; i<free.length; i++) 
{
    for(int j=0; j<free[i].length; j++) 
    {
        free[i][j] != free[i][j];
    }
}

答案 1 :(得分:2)

这是一个可以根据您的用途进行修改的简单示例。我加入了一种反转方法。

public class StackOverflowExample {

public static void main(String[] args) {
    int ROW = 10, COL = 10;
    boolean[][] ATwoDBoolArray = new boolean[ROW][COL];

    PutValuesInArray(ATwoDBoolArray);
    printArray(ATwoDBoolArray);
    invertArray(ATwoDBoolArray);
    printArray(ATwoDBoolArray);

}

private static boolean[][] PutValuesInArray(boolean array[][]) {

    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            array[i][j] = false;

        }

    }

    return array;
}

private static void printArray(boolean[][] array){
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            System.out.println(array[i][j]);

        }

    }

}

private static boolean[][] invertArray(boolean array[][]){
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            if(array[i][j]){
                array[i][j] = false;

            }else{
                array[i][j] = true;

            }

        }

    }


    return array;
}

}

答案 2 :(得分:1)

此方法反转给定的2维布尔数组中的所有值。

static void invertBooleanArray(boolean[][] arr) {
    for (int i = 0; i < arr.length; i++)
        for (int j = 0; j < arr[0].length; j++)
            arr[i][j] = !arr[i][j];
}