Ошибка 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.
Все верно, 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';
) и остальные условия не оцениваются.