的? (三路)操作员

时间:2015-04-16 13:42:38

标签: java operators ternary-operator

首先,对于以下问题道歉,我是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的结果?

道歉,如果这显然是显而易见的。

7 个答案:

答案 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.