2017-01-25 14 views
-3

我想顛倒一個布爾數組。 free是數組。這裏是我的代碼:如何反轉java中的布爾數組?

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

我想不出別的,只是爲了循環 –

回答

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

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