2017-01-25 1 views
-3

ブール値配列を逆にしたい。 freeが配列です。私は!が未定義であることをオペレータに言って、エラーを取得しJavaのブール値配列を元に戻すにはどうすればよいですか?

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

free = !free; 

:ここに私のコードです。私は何をすべきか?

EDIT 空ではありません。私はちょうど値を逆にしたい。

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が定義していないため、定義されていません!演算子を2次元のブール値配列に置き換えます。

あなたが望むものを達成できる方法の1つは、各値を反復してから!オペレーター。

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]; 
} 
関連する問題