簡體   English   中英

我如何只反轉二維布爾數組中的每個第二個元素?

[英]How would I only invert every second element in a 2D boolean array?

以下是我到目前為止的代碼。 我想讓數組中的每個第二個值都為假,剩下的值為真。 然后我想反轉數組(true = false,false = true)。 我有反轉部分,但不是讓每隔一個值 false 開始。

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 個布爾值。 然后你可以像這樣使每個 add 元素都為 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;

這將創建一個數組,其元素以棋盤模式的方式設置為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}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM