首先,对于以下问题道歉,我是java的新手,我从一本书中取了一个例子,但它没有完全解释自己。
我一直在读这个?运算符及其运行方式,并以下面的示例来学习:
class Ternary {
public static void main(String args[]) {
int i, k;
i = 10;
k = i < 0 ? -i : i; // get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
i = -10
k = i < 0 ? -i : i; //get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
}
}
我理解第一部分如何给出10的结果。 但我无法理解第二部分如何给出10的结果?
道歉,如果这显然是显而易见的。
答案 0 :(得分:1)
由于三元运算符在以下代码行中评估i < 0
:
k = i < 0 ? -i : i; //get absolute value of i
如果为真k = -i
其他错误k = i
正如其他人所提到的,-(-10) == 10
而且我相信这是你想要的输出,因为你试图获得一个数字的绝对值,所以如果它是负数,则打印出它的正值。
答案 1 :(得分:0)
负数的负数为正0 - ( - 10)= 10
答案 2 :(得分:0)
我被设置为-10然后k检查我是否&lt; 0,它是。
因此它执行第一种情况:
k = - ( - 10)= 10
答案 3 :(得分:0)
设置k时,我们有条件
i < 0
后面是?,它要求&#34;我是否小于0.如果是,它将返回第一个结果(-i),如果不是,它将返回第二个结果(i)。
这意味着同样的事情:
if (i < 0){
k = -i;
else{
k = i;
}
答案 4 :(得分:0)
i = -10
k = i < 0 ? -i : i;
与
相同k = i < 0 ? -(-10) : i;
给你+10
答案 5 :(得分:0)
当你写:
k = i < 0 ? -i : i
它被解释为
if(i < 0){
k = -i;
} else {
k = i;
}
所以,因为-10是&lt; 0,给定的表达式返回 - ( - 10),即10
答案 6 :(得分:0)
条件运算符用于决定将两个值中的哪一个赋值给变量。
采用以下形式:
type variableName =(布尔条件)? valueIfTrue:valueIfFalse;
在你的情况下,你有:
public static void main(String[] args){
int i, k;
i = -10;
k = i < 0 ? -i : i; //get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
}
所以,我们说:
我&lt; 0,井i等于-10,因此小于0.因此分配了真实条件,其值为-i。
由于 - ( - 10)= - * - 10 = 10 [即减去负数加号],输出为10.