簡體   English   中英

如何在java中反轉布爾數組?

[英]How do I reverse a boolean array in java?

我想反轉一個布爾數組。 free是數組。 這是我的代碼:

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

free = !free;

我收到一個錯誤說操作員! 未定義。 我該怎么辦?

編輯它不是空的。 我只想反轉這些值。

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

你得到運營商! 未定義僅僅是因為 Java 沒有定義 ! 二維布爾數組上的運算符。

您可以實現所需的一種方法是迭代每個值,然后使用 ! 操作員。

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

這是一個簡單的示例,您可以根據自己的用途進行修改。 我包括了一個反轉方法。

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

}

此方法反轉給定二維布爾數組中的所有值。

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

暫無
暫無

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

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