Окружение

Какое значение окажется внутри переменной result после выполнения кода?

public static void main(String[] args) {
  var age = 5;
  var result = generate();
}

static int generate() {
  return age + 3;
}

Правильный ответ: код не скомпилируется, компилятор выдаст ошибку, потому что внутри функции нет переменной с именем age, но функция пытается её использовать.

Функция не имеет доступа к переменным, объявленным в других функциях.


Рассмотрим другой пример:

public static void main(String[] args) {
  var age = 5;
  var result = generate();
}

static int generate() {
  var age = 10;
  return age + 3;
}

Переменная age в main изнутри generate недоступна, она не мешает объявлению переменной с таким же именем в generate - но это будет уже другая переменная. Функция generate будет под именем age видеть свою переменную, а main - свою.

В данном случае результатом будет число 13….age = 5 никак не влияет на код функции.

Задание

Это задание не связано напрямую с уроком, это просто еще одно полезное упражнение по работе с функциями.

Напишите функцию getAgeDifference, которая принимает два года рождения и возвращает строку с разницей в возрасте в виде The age difference is 11.

Как обычно, функцию нужно сделать public static, а не просто static, чтобы мы смогли вызвать ее из другого класса.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.