вторник, 6 марта 2007 г.

Java Puzzle 23: No Pain, No Gain

StringBuffer word = null;
switch (new Random().nextInt(2)) {
case 1: word = new StringBuffer('P');
case 2: word = new StringBuffer('G');
default: word = new StringBuffer('M');
word.append('a').append('i').append('n');
System.out.println(word);

Первая ошибка - использование малознакомого API. Значение никогда не будет равно 2. Авторы рекомендуют внимательно читать описание API перед использованием. Таким образом, вы никогда не получите "Gain".
Вторая ошибка - отсутствие операторов break в каждой ветке оператора switch. В результате word всегда будет равен new StringBuffer('M') и "Pain" вы тоже не получите.
И наконец, "Main" тоже не будет напечатан, так как нет конструктора, принимающего char. В этом случае параметр незаметно приводится к типу int и определяет первоначальный размер внутреннего массива.

Комментариев нет:

Отправить комментарий