Ошибка с условным оператором в Java [дубликат]

avatar
Brandon Koerner
8 апреля 2018 в 03:01
41
0
0

c.getCollectibles()[i][j].isCollected() ? collectiblePanels[i][j].setSplash(c.getCollectibles()[i][j].getIcon()) : repaint();

Я пишу программу на Java, и в моей программе есть ошибка. Я использую условный оператор. c.getCollectibles() возвращает двумерный массив класса Collectible, а isCollected() — это нестатический общедоступный метод в классе Collectible, который возвращает значение boolean.

collectiblePanels — это двумерный массив класса, который содержит метод setSplash(). Метод setSplash() принимает тот же тип, который возвращает getIcon() (детали не имеют отношения к ошибке). В целом, setSplash() равно void.

repaint() — метод случайных пустот. Опять же, конкретика не имеет отношения к ошибке.

Конкретная ошибка приведена ниже:

The left-hand side of an assignment must be a variable
Syntax error on token "?", invalid AssignmentOperator
Syntax error on token ":", ; expected
Источник
Brandon Koerner
8 апреля 2018 в 03:05
1

Я пробовал то же самое, используя стандартный формат if-else, и ошибок не возникает. Это похоже на очень своеобразную ошибку на стороне Oracle или очень глупую ошибку на моей.

Elliott Frisch
8 апреля 2018 в 03:07
2

JLS-15.25. Условный оператор ? : говорит явно Это ошибка времени компиляции, если второе или третье выражение операнда является вызовом метода <58456930122014>596.<508 Здесь оба являются void.

Hovercraft Full Of Eels
8 апреля 2018 в 03:08
1

Используйте последнее, определенно последнее - это ошибка в вашем понимании того, как работает тернарный оператор. Но все это легко найти, если вы будете искать в Google свое сообщение об ошибке. Например

Kevin Anderson
8 апреля 2018 в 03:10
0

Вы обнаружили на собственном горьком опыте, что условный оператор не является заменой оператора if. Живи и учись, мой друг :-)

Brandon Koerner
16 сентября 2018 в 04:31
0

Спасибо еще раз. После того, как я лучше ознакомился с тем, как java обрабатывает условный оператор, я чувствую себя немного глупо с этим вопросом.

Ответы (0)