У меня тоже в этом тесте была ошибка. Дело в том, что Java не разрешает использовать неинициализированные переменные. В этом коде создается переменная first, ей присваивается значение 10. Далее, на этой же строчке создается переменная second, ей НЕ присваивается начальное значение. Дальше идут два if, первый не срабатывает, второй да, подходит по условию. В результате second будет присвоено 2 и все должно БЫТЬ хорошо.
Но нет :) Как этот код видит компилятор? Он смотрит, то что есть одно условие, в нем присваивается значение переменной second. Есть второй if, там тоже есть присваивание. Мы, люди, понимаем, что эти два if взаимоисключающие, и какой-то из них один точно сработает. Но видимо компилятор Java не настолько умён. Он думает, что либо они могут оба сработать, либо вообще никакой. То есть, вместо 2 вариантов он выделяет 4 комбинации. В одной из этих комбинаций для second сначала бы присвоилось 1, а потом 2. А в другой комбинации, ни 1 и ни 2 бы не присвоились. И вот компилятор думает, как же так, МОЖЕТ быть ситуация, что second останется без инициализации и отказывается компилировать код. А вот если бы мы изменили этот код и написали бы
if (first < 10)
second = 1;
else
second = 2;
то код скомпилируется, потому что у компилятора только два выбора, либо 1, либо 2 :)