W dzisiejszym wydaniu serii JavaTraps zajmiemy się conditional operatorem (inaczej ternary operator, operator trójargumentowy, lub wyrażenie warunkowe). Przypomnijmy jego składnię:

(condition or expression)? operand1 : operand2;

// co jest równoważne z:
if (condition)
    operand1;
else
    operand2;

Tyle wstępem przypomnienia, a teraz przejdźmy do dzisiejszej zagadki. Pochodzi ona z serii Java Puzzlers, która zainspirowała mnie wczoraj. Pytanie brzmi oczywiście, co wyświetli się na ekranie?

import java.util.Random;

public class JavaTraps002 {
	public static void main(String args[]) {
		Random rand = new Random();
		boolean check = rand.nextBoolean();

		Number number = (check || !check)?
				new Integer(1) : new Double(2.0);

		System.out.println("Wynik: "+number);
	}
}

Jak widać przykład nie jest strasznie skomplikowany, dostępne odpowiedzi to:

A) Wynik: 1

B) Wynik: 2.0

C) Błąd kompilacji

D) Inna odpowiedź

Sprawdź odpowiedź