-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