簡體   English   中英

將傳遞的2D布爾數組的所有值設置為false?

[英]Set all values of a passed 2D boolean array to false?

我有一個2D布爾值,稱為“測試”,具有隨機設置的“真”和“假”的內容。

我正在嘗試創建一種將“測試”的所有內容設置為false的方法。

這是我的嘗試:

public static void clearArray( boolean[][] test) {
    Arrays.fill(test[1], false);
}   

如果您想知道我為什么有[1],答案是“我不知道。至少日食會讓我運行它。”

有人知道這樣做的正確方法嗎?

和往常一樣,謝謝您stackoverflow。

public static void clearArray( boolean[][] test) {
    for (boolean[] row: test) 
      Arrays.fill(row, false);
} 

您幾乎是正確的,只需遍歷數組的第一級並在每個第二級數組上調用Arrays.fill

public static void clearArray( boolean[][] test) {
  for( boolean[] secondLvl : test ) {
   Arrays.fill( secondLvl , false);
  }
}  

請注意,二維數組基本上只是數組的數組,即,如果您具有boolean[][]則將獲得布爾數組的數組。 請注意,第二層數組(即內部boolean[] )必須首先進行初始化,即在創建2D數組之后,所有內部數組均為空。

嘗試這個。 從邏輯上講,這是正確的方法:

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

或者可以按照您想要的方式完成,如下所示:

for(int i=0; i<test.length; i++) {
    Arrays.fill(test[i], false);
}

那是因為Arrays.fill需要單個數組。

public static void clearArray( boolean[][] test) 
{   
  for ( int i=0 ; i < test.rowCount; i++)
     Arrays.fill(test[i], false);     
}
public static void clearArray( boolean[][] test) {
    for(boolean[] inTest: test)
        Arrays.fill(inTest, false);

} 

還有streams方法:

public static void clearArray(boolean[][] b) {
    Arrays.stream(b).forEach(a -> Arrays.fill(a, false));
}

public void test() {
    boolean[][] b = new boolean[4][4];
    for (int i = 0; i < b.length; i++) {
        b[i][i] = true;
    }
    System.out.println("Before:" + Arrays.deepToString(b));
    clearArray(b);
    System.out.println("After:" + Arrays.deepToString(b));
}

暫無
暫無

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

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