Java является pass by reference. Вы не можете изменить значение примитивного типа (например, целое число), передав его в функцию, потому что значение этой переменной передается в функцию, а не указатель на нее. Все, что вы меняете в функции, происходит только внутри функции. Вы можете исправить свою проблему одним из двух способов:
Решение 1: Измените свою функцию, чтобы вернуть значение и назначить переменную, необходимую для изменения в результате вызова функции. Функция будет выглядеть следующим образом:
private static void newNumber()
{
int userInput;
// get user input, error check
return userInput;
}
А вызов будет выглядеть следующим образом:
myInt = newNumber();
Примечание вам не нужно проходить в Scanner
или int
, как вы можете положить, что все в newNumber
функция (если вы не хотите повторно использовать объект Scanner
, который вы создали ранее).
Решение 2: Инкапсулируйте int
в классе. Это, вероятно, не нужно и слишком сложно для этой проблемы, но если вы создадите класс с int внутри него, вы можете создать в нем объект с вашим int внутри, передать указатель на этот объект в функцию и использовать этот указатель как он все равно укажет на объект, который вы создали ранее.
Что должна делать функция 'newNumber'? Замените параметр 'num' номером, который пользователь вводит в качестве ввода? – brandaemon
Он должен заменить номер, введенный пользователем в начале кода, с новым номером, введенным пользователем ... например, если они ввели 8 в начале, а затем из меню выбрано изменить номер, который необходимо заменить 8 с новым номером, который они набрали с кодом, введенным вверху – Tav
. Измените свой вопрос, чтобы это было ясно. Вы можете включить вызов функции, чтобы проиллюстрировать вашу точку. – brandaemon