JavaTraps 002

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ź

Komentarze