2015-04-16 76 views
1

首先,为以下问题道歉,我是新来的java,我从一本书的例子,但它没有完全解释自己。The? (三路)运营商

我一直在阅读?运营商和它的功能如何,并根据以下作为一个例子来借鉴:

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)= + 1,正常数学 – epoch

+0

'I = 10 ; -i => -10;'和'i = -10; -i => --10 => 10;'(所以这是[Math](http://www.mathsisfun.com/positive-negative-integers.html)问题。) –

回答

0

条件运算符用于决定分配给变量的两个值中的哪一个。

它的形式如下:

type variableName =(boolean condition)? 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); 
} 

所以,我们说:

我< 0,那么我等于-10,因此小于0。因此真实情况是分配,其值为-i。

自 - ( - 10)= - * - 10 = 10 [即负倍减去是加上]时,输出为10

0

负的负为正0 - ( - 10)= 10

0

我获取设置为-10,和然后K检查,如果我< 0,这是。

因此它执行第一种情况:

K = - ( - 10)= 10

0

设置K时,我们有条件

i < 0 

其次,它要求? “我是否小于0.如果是,则返回第一个结果(-i),如果不是,则返回第二个结果(i)。

它表示与

if (i < 0){ 
    k = -i; 
else{ 
    k = i; 
} 
0
i = -10 
k = i < 0 ? -i : i; 

相同

k = i < 0 ? -(-10) : i; 

给你+10

0

当你写:

k = i < 0 ? -i : i 

它解释为

if(i < 0){ 
    k = -i; 
} else { 
    k = i; 
} 

如此以来-10是< 0,给定的表达式返回 - ( - 10),即10

1

由于三元运算在下面的代码行评估i < 0

k = i < 0 ? -i : i; //get absolute value of i 

如果真正k = -i

否则为假k = i

而作为其他mentionned,-(-10) == 10 我相信这是你想要的输出,因为你试图获得一个数字的绝对值,所以如果它是负数,打印出它的正面价值。

+0

感谢您的解释qcGold,这使得对我来说真的很有意义。 –

+0

np;)祝你的代码好运 – qcGold