Ошибка в коде генетическом в данном случае.
Анон, если ты написал else if - это ошибка.
Во всех случаях, кроме некоторых оптимизаций быстродействия.
В данном случае мы имеем дело с линейным кодом, поэтому это именно ошибка и есть.
Просто не делай так и исчезнет 90% пространства для ошибок компиляции.
Как вы пишете условные операторы: if (...) {
...
else if (...) {
...
else {
...
} Фигурных скобок открыто: 3, закрыто: 1.
Как надо писать условные операторы: if (...) {
...
} else if (...) {
...
} else {
...
} Фигурных скобок открыто: 3, закрыто: 3.
Каждый вариант действий заключен в свою пару фигурных скобок.