У меня проблемы с компиляцией моего Java-кода. Я предполагаю, что это из-за ошибки приведения / промотирования во втором методе «method1»

Терминал

Java-код

Привет всем.

У меня проблемы с компиляцией моего Java-кода ... Я предполагаю, что это из-за ошибки преобразования / продвижения во втором методе "method1".

Если бы кто-нибудь мог обнаружить ошибки и сообщить мне, это было бы здорово!

заранее спасибо

Всего 1 ответ


Всякий раз, когда вы определяете новую переменную, она «доступна» в некоторой области. Для подавляющего большинства определений java-переменных эта область является «лексической»: ищите ближайшую пару квадратных скобок. В пределах этого это видно. Снаружи его не существует.

В строке 22 вы определяете переменную n1: int n1 = ... ;. Ближайшие фигурные скобки находятся в строках от 21 до 40 (скриншот недостаточно широк) - конечно, не в строке 12, на которую вы ссылаетесь. Таким образом, в строке 12 n1 просто не существует. совсем. Это одна объясненная ошибка.

Другая строка 24: строка 23 возвращается. После этого код не сможет продолжить выполнение, и javac не позволит вам скомпилировать это: строка 24 ошибочна, так как ее невозможно достичь. Я не знаю, как это исправить, потому что ваш код не понятен; Я не знаю, что вы пытаетесь сделать здесь.

Возможно, вы думаете, что «возврат» похож на «экспорт»; это .. просто не так, как это работает. возврат возвращается из метода. В этом методе выполнение останавливается прямо в этом методе и переключается обратно к вызывающей стороне, и значение метода является тем, на которое рассчитывает выражение, которое вы предоставляете в операторе возврата.

Такое ощущение, что вы хотите вернуть 3 отдельных значения из метода. Это не так, как работает Java: вы можете вернуть только один. Вы можете сделать это своего рода объектом (массивом или новым экземпляром класса, который вы пишете) и таким образом эффективно «возвращать несколько значений», но вы должны упаковать их в одну вещь для возврата.