簡體   English   中英

Java為每個循環迭代布爾數組

[英]Java for each loop iterate boolean array

我有一個布爾數組

boolean[] test = {
    false,
    true,
    true,
    false,
    true
};

我正在嘗試使用“ for-each”語句翻轉(從true到false,從false到true)值,如下所示:

for(boolean x : test) {
    x = !x;
}

但這只是在局部范圍內更改x變量。

我是Java的新手,我想問一下如何做到這一點以及這是否是正確的方法。 我進行了很多搜索,但是大多數示例都是用於從數組中收集數據而無需對其進行修改。

不,那不是正確的方法。 增強的for循環不允許您更改要迭代的值。 要反轉數組,您需要使用常規的for循環:

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

(請注意,增強的for循環將使您可以更改任何數組元素所引用的對象 (如果它們是類),但這與更改元素本身的值不同。)

如果要影響測試的值,則需要使用非增強的for循環:

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

您不能在for-each循環中更改項目。 您可以改用規則循環嗎?

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

正如您所說的那樣,您不必使用for每個,因為for每個讀取數組的值,並將其存儲在局部變量中。 您需要迭代數組並直接訪問索引。 我不會發布任何代碼,因此您可以查找和考慮它。

毫不奇怪,它不起作用。 畢竟,您要操縱局部變量,它不是對象,也不是引用。 使用法線for循環並修改相應位置。

增強的for循環會創建一個新變量x並每次都在本地設置該值,因為布爾值是原始值,因此不會通過引用傳遞。 為此,您將需要使用舊的for循環。

暫無
暫無

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

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