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:
Pzdr 😉