? (üç yollu) Operatör

Her şeyden önce, aşağıdaki soru için özür dilerim, java'da yeniyim, örneği bir kitaptan aldım, ancak kendisini tamamen açıklayamıyor.

Hakkında okuyordum? operatör ve nasıl işlediğini ve aşağıdakilerden birini öğrenmek için örnek olarak kullanma:

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);
    }
}

İlk bölümün 10 sonucunu nasıl verdiğini biliyorum. Fakat ikinci bölümün 10 sonucunu nasıl verdiğini takip edemiyorum?

Bu açıkça anlaşılırsa özür dilerim.

1
- (- i) = + i, normal matematik
katma yazar epoch, kaynak
i = 10; -i => -10; ve i = -10; -i => --10 => 10; (Yani bir Matematik soru.)
katma yazar Kevin Cruijssen, kaynak

7 cevap

Since the ternary operator evaluates i < 0 in your following line of code:

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

If true k = -i

else false k = i

Diğerlerinin de söylediği gibi, - (- 10) == 10 Ve bir sayının mutlak değerini almaya çalıştığınız için istediğiniz çıktının bu olduğuna inanıyorum, bu nedenle negatifse, pozitif değerini yazdırın.

1
katma
Açıklamalarınız için teşekkür ederiz qcGold, bu benim için gerçekten çok anlamlı.
katma yazar Stephen Worrall, kaynak
np;) kodunuzla iyi şanslar
katma yazar qcGold, kaynak
i = -10
k = i < 0 ? -i : i; 

aynıdır

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

+10 verir

0
katma

i gets set to -10 and then k checks if i < 0, which it is.

Bu nedenle ilk durumu gerçekleştirir:

k = - (- 10) = 10

0
katma

Negatifin negatifi, pozitif bir 0 - (-10) = 10'dur.

0
katma

Yazarken:

k = i < 0 ? -i : i

olarak yorumlanır

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

So since -10 is < 0, the given expression returns -(-10), that is 10

0
katma

k değerini ayarlarken

i < 0

ardından "ben 0'dan küçük mü?"

Bu aynı anlama geliyor:

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

Koşullu operatör, iki değişkenden hangisinin bir değişkene atanacağına karar vermek için kullanılır.

Form alır:

type değişkeniAdı = (boolean koşulu)? valueIfTrue: valueIfFalse;

Senin durumunda:

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);
}

Yani diyoruz ki:

i < 0, well i is equal to -10 and is therefore less than 0. therefore the true condition is assigned, which has the value of -i.

- (- 10) = - * - 10 = 10 [yani eksi çarpı eksi artı] olduğundan, çıkış 10'dur.

0
katma