Home > Java Puzzle > A Sea of Troubles

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

  1. Szymon D.
    11 marca, 2011 at 14:03 | #1

    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 😉

  1. Brak jeszcze trackbacków