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
? : говорит, что явноЭто ошибка времени компиляции, когда второе или третье выражение операнда является вызовом метода void. Здесь оба - это void.
Выбирайте последнее, определенно последнее - это ошибка в вашем понимании того, как работает тернарный оператор. Но все это легко найти, если вы выполните поиск в Google по своему сообщению об ошибке. Например
Вы на собственном горьком опыте обнаружили, что условный оператор не является заменой оператору if. Живи и учись, друг мой :-)
Еще раз спасибо. После того, как я лучше ознакомился с тем, как java обрабатывает условный оператор, я чувствую себя немного глупо с этим вопросом.




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