Как разбить или выйти из метода в Java?


123

Ключевое слово breakв Java может использоваться для выхода из цикла или оператора переключения. Есть ли что-нибудь, что можно использовать для выхода из метода?


2
Этот вопрос также стоит проверить: stackoverflow.com/q/18188123/2182237
Дон

Ответы:


256

Используйте returnключевое слово для выхода из метода.

public void someMethod() {
    //... a bunch of code ...
    if (someCondition()) {
        return;
    }
    //... otherwise do the following...
}

Из учебника по Java, на который я ссылался выше:

Любой метод, объявленный как void, не возвращает значения. Он не обязательно должен содержать оператор возврата, но может это сделать. В таком случае оператор return может использоваться для выхода из блока потока управления и выхода из метода, и его можно использовать просто следующим образом:

return;

Будет ли это работать при выходе из конструктора? Я знаю, это немного странно, но мне нужен этот хак.
stillanoob

44

Чтобы добавить к другим ответам, вы также можете выйти из метода, вызвав исключение вручную:

throw new Exception();

введите описание изображения здесь


18

Как вылезти в java ??

Ответ: Лучший способ: System.exit(0);

В языке Java есть три состояния перехода, которые позволяют прервать нормальный поток программы.

К ним относятся break , continue , return , помеченный оператор break, например

import java.util.Scanner;
class demo
{   
    public static void main(String args[])
    {
            outerLoop://Label
            for(int i=1;i<=10;i++)
            {
                    for(int j=1;j<=i;j++)
                    {   
                        for(int k=1;k<=j;k++)
                        {
                            System.out.print(k+"\t");
                            break outerLoop;
                        }
                     System.out.println();                  
                    }
             System.out.println();
            }
    }   
}

Вывод: 1

Теперь обратите внимание на программу ниже:

import java.util.Scanner;
class demo
{   
    public static void main(String args[])
    {
            for(int i=1;i<=10;i++)
            {
                    for(int j=1;j<=i;j++)
                    {   
                        for(int k=1;k<=j;k++)
                        {
                            System.out.print(k+"\t");
                            break ;
                        }                   
                    }
             System.out.println();
            }
    }   
}

вывод:

1
11
111
1111

and so on upto

1111111111

Точно так же вы можете использовать оператор continue, просто замените break на continue в приведенном выше примере.

То, что нужно запомнить :

Метка case не может содержать выражения среды выполнения, включающие вызовы переменных или методов.

outerLoop:
Scanner s1=new Scanner(System.in);
int ans=s1.nextInt();
// Error s1 cannot be resolved

4

Если вы глубоко погружены в рекурсию внутри рекурсивного метода, вы можете выбрать исключение и перехватить исключение.

В отличие от Return, который возвращает только на один уровень выше, исключение выйдет из рекурсивного метода, а также в код, который его изначально вызвал, где его можно перехватить.


1

используйте returnдля выхода из метода.

 public void someMethod() {
        //... a bunch of code ...
        if (someCondition()) {
            return;
        }
        //... otherwise do the following...
    }

Вот еще пример

int price = quantity * 5;
        if (hasCream) {
            price=price + 1;
        }
        if (haschocolat) {
            price=price + 2;
        }
        return price;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.