Ошибка java: not a statement в IntelliJ IDEA

Вроде все написано корректно, но IntelliJ IDEA почему то выдает ошибку:

java: not a statement

public class Main {
    
    public static void main(String[] args) {

        int a = 20;
        int b = 35;

        if (a == b) {
            System.out.println("a == b");
        } else if (a > b) {
            System.out.println("a > b");
        } else (a < b) {
                System.out.println("a < b");
        }
    }
}

Ответы (2 шт):

Автор решения: Алексей Шиманский

У else нельзя писать какие-то дополнительные условия в скобках. На то он и просто else (перевеодится как иначе, то есть читай как если ни то и ни сё не подошло, то иначе...). Если нужно соблюсти условие, то надо писать else if, как и в случае выше.

Кстати, if, так и переводится: ЕСЛИ, что интуитивно понятно, что хочется туда подставить если ЧТО-ТО, то есть хочется подставать какое-то условие. Что явно не хочется делать просто с else.


В целом, в конце можно оставить и просто else, тогда условие (a < b) надо просто удалить. Логически оно как раз будет всё правильно отрабатывать, ведь если а и b не равны и a не больше b, то значит a меньше b.

→ Ссылка
Автор решения: Roman C

Все верно, else (a < b) - это некорректно по синтаксису и будет выдавать ошибку компиляции.

Когда идёт цепочка if-else-if, то надо делать отступы в коде, чтобы было видно к какому блоку относится то или иное утверждение.

if (a == b) {
   System.out.println("a == b");
} else if (a > b) {
   System.out.println("a > b");
} else if (a < b) { // всегда верно, поэтому можно использовать просто else
   System.out.println("a < b");
} 

В последнем операторе цепочки оператор if можно опустить, т.к. в данном случае логически условие всегда верно. Если добавить ещё один блок else, то он никогда выполняться не будет и компилятор его удалит.


Оператор if-then-else

Оператор if-then-else обеспечивает вторичный путь выполнения, когда предложение if принимает значение false. Вы можете использовать оператор if-then-else в методе applyBrakes(), чтобы выполнить какое-либо действие, если тормоза задействуются, когда велосипед не движется. В этом случае действие состоит в том, чтобы просто распечатать сообщение об ошибке о том, что велосипед уже остановился.

void applyBrakes() {
    if (isMoving) {
        currentSpeed--;
    } else {
        System.err.println("Велосипед уже остановился!");
    }
}

Следующая программа, IfElseDemo, присваивает оценку на основе значения результата теста: A — за результат 90 % или выше, B — за результат 80 % или выше и т. д.

class IfElseDemo {
   public static void main(String[] args) {

       int testscore = 76;
       char grade;

       if (testscore >= 90) >{
           grade = 'A';
       } else if (testscore >= 80) {
           grade = 'B';
       } else if (testscore >= 70) {
           grade = 'C';
       } else if (testscore >= 60) {
           grade = 'D';
       } else {
           grade = 'F';
       }
       System.out.println("Grade = " + grade);
   }
}

Результатом работы программы является:

Grade = С

Возможно, вы заметили, что значение grade может удовлетворять более чем одному выражению в составном операторе: 76 >= 70 и 76 >= 60. Однако, как только условие выполнено, соответствующие операторы выполняются (grade = 'C';) и остальные условия не оцениваются.

→ Ссылка