我怎么才会反转2D布尔数组中的每一个元素?

时间:2017-01-25 02:16:48

标签: java

以下是我的代码。我想让数组中的每个第二个值为false,左边的值为true。然后我想反转数组(true = false,false = true)。我将反转部分向下,但不是每隔一个值使得假开始。

public class Stack {

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;
}

}

3 个答案:

答案 0 :(得分:1)

执行此操作的方法是将PutValuesInArray(boolean array[][])更改为以下代码:

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

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

        }

    }

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

    return array;
}

答案 1 :(得分:1)

你的意思是这样吗?

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

2代替1增加。

int i = 1开始循环,将所有奇数元素设为false。

如果您的数组长度少于32个元素,则可以使用单个int在其位中存储32个布尔值。而然后你可以使每个添加元素都像这样:

int array;

array &= 0x55555555; // set odd bits false
array &= 0xAAAAAAAA; // set even bits false

答案 2 :(得分:0)

如果它是棋盘状图案,那么我建议如下:

boolean[][] array = new boolean[5][5];

for(int x = 0; x < array.length; x ++)
    for(int y = 0; y < array[x].length; y ++)
        if((x + y) % 2 == 0)
            array[x][y] = true;

这将创建一个数组,其元素设置为棋盘格式的truefalse

生成后的5 x 5数组将如下所示:

boolean[][] array = {
    {true, false, true, false, true}, 
    {false, true, false, true, false}, 
    {true, false, true, false, true}, 
    {false, true, false, true, false}, 
    {true, false, true, false, true}
}