Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvPmFnER 280 of 420 menu
◀ ▶

Досрочный return в Java

После того, как выполнится инструкция return, метод закончит свою работу. То есть после выполнения return больше никакой код не выполнится.

В Java команду после return в том же блоке компилятор считает недостижимой, и такой класс не соберется. Поэтому после return код не пишут:

public class Main { static int func(int num) { return num * num; } public static void main(String[] args) { int res = func(3); System.out.println(res); // выведет 9 } }

Это не значит, что в методе должен быть один return. Но выполнится только один из них.

В следующем примере в зависимости от значения параметра выполнится либо первый, либо второй return:

public class Main { static String func(int num) { if (num >= 0) { return "+"; } else { return "-"; } } public static void main(String[] args) { System.out.println(func(3)); // выведет '+' System.out.println(func(-3)); // выведет '-' } }

Пусть у нас есть метод, возвращающий сумму чисел от 1 до 5:

public class Main { static int func() { int sum = 0; for (int i = 1; i <= 5; i++) { sum += i; } return sum; } public static void main(String[] args) { int res = func(); System.out.println(res); // выведет 15 } }

Пусть теперь мы расположим return внутри цикла, вот так:

public class Main { static int func() { int sum = 0; for (int i = 1; i <= 5; i++) { sum += i; return sum; } return sum; } public static void main(String[] args) { int res = func(); System.out.println(res); // выведет 1 } }

В этом случае цикл прокрутится лишь одну итерацию и произойдет автоматический выход из метода, а заодно и из цикла. За одну итерацию в переменной sum окажется лишь число 1, а не вся нужная сумма. Второй return нужен, чтобы метод собрался: компилятор требует результат на каждом пути.

То, что return расположен внутри цикла, не всегда может быть ошибкой. В следующем примере сделан метод, который определяет, сколько первых элементов списка нужно сложить, чтобы сумма стала больше или равна 10:

import java.util.ArrayList; import java.util.Arrays; public class Main { static int func(ArrayList<Integer> arr) { int sum = 0; for (int i = 0; i < arr.size(); i++) { sum += arr.get(i); // Если сумма больше или равна 10: if (sum >= 10) { return i + 1; // выходим из цикла и из метода } } return 0; } public static void main(String[] args) { ArrayList<Integer> arr = new ArrayList<>( Arrays.asList(1, 2, 3, 4, 5) ); int res = func(arr); System.out.println(res); // выведет 4 } }

А в следующем примере сделан метод, который вычисляет, сколько целых чисел, начиная с 1, нужно сложить, чтобы результат был больше 100:

public class Main { static int func() { int sum = 0; int i = 1; while (true) { // бесконечный цикл sum += i; if (sum >= 100) { return i; // цикл крутится, пока не выйдет тут } i++; } } public static void main(String[] args) { System.out.println(func()); // выведет 14 } }

Что выведется на экран в результате выполнения следующего кода:

public class Main { static int func(int num) { return num; // return num * num; // сюда выполнение не дойдет } public static void main(String[] args) { System.out.println(func(3)); } }

Объясните почему.

Что выведет каждый из System.out.println в результате выполнения следующего кода:

public class Main { static int func(int num) { if (num <= 0) { return -num; } else { return num * num; } } public static void main(String[] args) { System.out.println(func(10)); System.out.println(func(-5)); } }

Объясните почему.

Что выведет каждый из System.out.println в результате выполнения следующего кода:

public class Main { static int func(int num) { if (num <= 0) { return -num; } return num * num; } public static void main(String[] args) { System.out.println(func(10)); System.out.println(func(-5)); } }

Объясните почему.

Что выведется на экран в результате выполнения следующего кода:

public class Main { static int func(int num) { int sum = 0; for (int i = 1; i <= num; i++) { sum += i; return sum; } return sum; } public static void main(String[] args) { System.out.println(func(5)); } }

Объясните почему.

Что хотел сделать автор данного кода? Исправьте ошибку автора.

Напишите метод, который параметром будет принимать число и делить его на 2 столько раз, пока результат не станет меньше 10. Пусть метод возвращает количество итераций, которое потребовалось для достижения результата.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить