-1
所以,我必須代表例如num1 = <-1,4,5>
將是整數的ArrayList -145和num2= <2,3,6>
將代表236訂單Java表達式的評價
ArrayList<Integer> num1 = new ArrayList<>(Arrays.asList(1,2,9));
ArrayList<Integer> num2 = new ArrayList<>(Arrays.asList(-5,5));
final int sign = num1.get(0) < 0^num2.get(0) < 0 ? -1 : 1;
所以標誌是應該確定將繁殖的發生符號num1與num2(-145*236
將是一個負數)。所以比較運營商非關聯所以這應該是一個等價的表達式:
sign = (num1.get(0) < 0^num2.get(0)) && (0^num2.get(0) < 0) ? -1:1;
請告訴我困惑我是爲什麼num2.get(0)
0被異或運算,因爲這並不改變num2.get(0)
可言。
也可以說num2.get(0) = -2
和num1.get(0) = -3
那麼如果我們評估符號,我們會得到符號= -1。因爲(-3< 0^-2) AND (0^-2 < 0)? -1:1;
評估爲-1。
但是這將是錯誤的-3 * -2應該是一個正數。所以我錯過了什麼,因爲我知道這段代碼是正確的(它來自教科書)。
這是不正確的java'AND'不是java。 '0^num2.get(0)<0'是無稽之談。 '<'比'^'綁定更緊密,所以這是''用'boolean'對'int'進行操作。你也是對的,用零來形成一個'int'什麼也不做。相信我。教科書中有很多錯誤。 – Gene
如果你想要的只是符號,你可能會考慮'Integer.signum(num1.get(0)* num2.get(0))'。 – markspace
這兩個不相同。 – EJ2015