2015-04-16 2 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

- (- я) = + I, нормальная математика – epoch

+0

'я = 10 ; -i => -10; 'и' i = -10; -i => --10 => 10; '(Итак, это вопрос [Math] (http://www.mathsisfun.com/positive-negative-integers.html).) –

ответ

0

Условный оператор используется для определения того, какое из двух значений присвоено переменной.

Он принимает форму:

типа имяПеременной = (логическое условие)? valueIfTrue: значениеIfFalse;

В вашем случае у вас есть:

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, что оно есть.

Поэтому он выполняет первый случай:

к = - (- 10) = 10

0

при установке к, имеем условие

i < 0 

, за которой следует, что спрашивает? «Is i меньше 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 

If правда k = -i

еще ложь k = i

И как другие упоминалось, -(-10) == 10 И я считаю, что это результат, который вы хотите, так как вы пытаетесь получить абсолютное значение числа, поэтому, если оно отрицательное, распечатайте его положительное значение.

+0

Спасибо за ваше объяснение qcGold, что делает действительно хороший смысл для меня. –

+0

np;) удачи с кодом – qcGold

Смежные вопросы