它們都是布爾哪個索引導致的事,所以我真不不知道你爲什麼想把它們轉換成整數並總結它們:它會很容易,但絕對沒用。
所以。我假設你沒有矩陣中的矩陣(我實際上假設你不知道矩陣是什麼,但請不要爲此感到惱火),你有他們在單獨的陣列中,你完全知道你有多少陣列有(比方說3)。我也假設他們都有相同的長度。
想法是:對於每個可用的位置,我們檢查佔據三個數組中的那個位置的三個元素,看看它們是否都是真的。我們可以用這個比較的結果做什麼?我們可以將它打印到屏幕上,放入另一個陣列或我們想做的任何事情。
讓我們先從這三個數組:
boolean[] foo = {true, true, false};
boolean[] bar = {true, false, false};
boolean[] baz = {true, false, false};
確定。現在我們可以創建第四個數組來存儲我們的結果。
boolean[] qux = new boolean[3];
,或者甚至更好:
boolean[] qux = new boolean[foo.length];
讓我們開始建立我們的C風格的循環:
for (i = 0; i < foo.length; i++) {
...
}
如果您在使用數組時,你可能已經知道如何爲循環工作:第一條語句將被執行,就像它被寫入之前的整個代碼塊一樣在大括號內;第二條語句在每次執行該塊時都會被檢查爲第一條指令,並且在循環停止時失敗;第三條語句將在每次執行塊時執行爲last指令。
而且您可能已經知道,如果數組的長度爲n
,則其元素的索引將爲
0, [...], n-1
。
如果你不知道這兩件事情......那麼,不客氣。
那麼,我說我們想對每個可用的位置做什麼?我們想比較這個位置的三個要素。所以for循環變成:
for (int i = 0; i < foo.length; i++) {
if (foo[i] && bar[i] && baz[i]) {
...
}
}
我們剛纔添加這是什麼檢查:如果在i
位置在數組中的元素FOO是true
,和還元素在i
位置陣列杆是在陣列在i
位置true
,和還元件巴茲是true
...我們做一些事情。
我們可以例如把結果qux:
for (int i = 0; i < foo.length; i++) {
if (foo[i] && bar[i] && baz[i]) {
qux[i] = true;
} else {
qux[i] = false;
}
}
注意,比較本身求一個布爾值,當它的值是true
我們存儲true
;當我們false
我們存儲一個false
。所以我們也可以這樣寫:
for (int i = 0; i < foo.length; i++) {
qux[i] = (foo[i] && bar[i] && baz[i]);
}
Grrrrreat,我們實現了我們想達到的目標!你是否也想顯示這樣的結果?讓我給你介紹的增強爲循環:
for (boolean val : qux) {
...
}
基本上是qux boolean數組,它是一個布爾值的「容器」。這對於聲明說:對於每個組成qux ...做一點事。
所以,讓我們用它來打印這些元素:
for (boolean val : qux) {
System.out.println(val);
}
方法println()
,在對象out
,System
(類的靜態成員不用擔心,如果你不明白所有這些條款,你會了解他們的含義,如果你繼續學習Java)在屏幕上顯示的東西。從技術上講,這「東西」應該是一個字符串,但自從Java知道如何使串出布爾值,傳遞VAL到它的時候,我們也不必過於擔心。
想要在的第一個內完成所有工作,並且打印的方式也很漂亮嗎?容易餡餅:
for (int i = 0; i < foo.length; i++) {
qux[i] = (foo[i] && bar[i] && baz[i]);
System.out.println("At position " + i + " we have " + qux[i]);
}
那麼,我們現在如何檢查所有錯誤的位置?我們可以使用爆炸(!
),其含義是:取這個布爾,並考慮它的否定(true
如果false
和false
如果true
)。在數組中i
的位置,如果在i
位置在數組中的元素FOO是false
,和還元素酒吧是false
,並且:
使用它,我們可以表達這種檢查在i
位置陣列巴茲元素是false
...我們做一些事情。
所以我們需要第五陣列:
boolean[] norf = new boolean[foo.length];
,我們將我們的循環改變
for (int i = 0; i < foo.length; i++) {
qux[i] = (foo[i] && bar[i] && baz[i]);
if (qux[i]) {
System.out.println("At position " + i + " they are all true.");
}
norf[i] = (!foo[i] && !bar[i] && !baz[i]);
if (norf[i]) {
System.out.println("At position " + i + " they are all false.");
}
}
希望這是有益的。
你基本上有一個矩陣或表(假設他們有相同的列數)。你應該能夠簡單地走每一個陣列的每列和檢查的結果... – MadProgrammer
'0b110和0b100時與0b100時== 0xb100' - 按位與。 –