我怎么只会反转 2D 布尔数组中的每一个第二个元素



以下是我到目前为止的代码。我想使数组中的每一秒值都为假,而剩余的值为真。然后我想反转数组(真 = 假,假 = 真)。我有反转部分,但没有让每秒值为假开始。

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;
}
}
一种方法

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

你的意思是这样?

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

2 递增,而不是1 递增。

int i = 1 处启动循环以将所有奇数元素设置为 false。


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

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

如果你追求的是棋盘格模式——我建议如下:

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;

这将创建一个数组,其元素设置为true并以棋盘模式的方式false

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

相关内容

最新更新