A Sea of Troubles
Od razu ruszamy z pierwszym Puzzle’em:)
- Co pojawi się na ekranie po uruchomieniu poniższego kodu?
import java.util.Random;
public class Hamlet {
public static void main(String[] args) {
Random rnd = new Random();
boolean toBe = rnd.nextBoolean();
Number result =
(toBe || !toBe) ? new Integer(3) : new Float(1);
System.out.println(result);
}
}
Odpowiedzi:
(a) 3
(b) 1.0
(c) zostanie rzucony wyjątek
(d) żadne z powyższych
- Odpowiedź uzasadnij i wyjaśnij dlaczego tak to działa
- Jak poprawić powyższy kod, aby zachowywał się zgodnie z intuicją
Autorami zagadki są Joshua Bloch i William Pugh
Sie wie, że na ekranie sie pojawi się 3 gdyż ponieważ ależ owszem że:
W linii 9 warunek zawsze jest true. Warunek ten możemy rozpisać sobie inaczej:
if ( toBe == true || toBe != true ) { Number result = new Integer(3); } else { Number result = new Float(1); }Pzdr 😉