Jak rozbić lub wyjść z metody w Javie?

123

Słowo kluczowe breakw Javie może służyć do przerywania pętli lub instrukcji switch. Czy jest coś, co można wykorzystać, aby zerwać z metodą?

Ali
źródło
2
Warto też sprawdzić to pytanie: stackoverflow.com/q/18188123/2182237
Don

Odpowiedzi:

256

Użyj returnsłowa kluczowego, aby wyjść z metody.

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

Z samouczka Java, do którego linkowałem powyżej:

Żadna metoda zadeklarowana jako void nie zwraca wartości. Nie musi zawierać instrukcji zwrotu, ale może to zrobić. W takim przypadku instrukcja return może zostać użyta do rozgałęzienia się z bloku przepływu sterowania i wyjścia z metody i jest po prostu używana w następujący sposób:

return;
Mark Peters
źródło
Czy to zadziała przy wychodzeniu z konstruktora? Wiem, że to trochę dziwne, ale potrzebuję tego hacka.
stillanoob
44

Aby dodać do innych odpowiedzi, możesz również wyjść z metody, zgłaszając wyjątek ręcznie:

throw new Exception();

wprowadź opis obrazu tutaj

Jops
źródło
18

Jak się wybić w Javie ??

Odp: Najlepszy sposób: System.exit(0);

Język Java udostępnia trzy stany skoku, które pozwalają na przerwanie normalnego przepływu programu.

Należą do nich break , continue , return , oznaczone instrukcja break np

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();
            }
    }   
}

Wynik: 1

Teraz uwaga poniżej programu:

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();
            }
    }   
}

wynik:

1
11
111
1111

and so on upto

1111111111

Podobnie możesz użyć instrukcji continue, po prostu zamień break na continue w powyższym przykładzie.

Rzeczy do zapamiętania :

Etykieta przypadku nie może zawierać wyrażeń środowiska wykonawczego obejmujących wywołania zmiennych lub metod

outerLoop:
Scanner s1=new Scanner(System.in);
int ans=s1.nextInt();
// Error s1 cannot be resolved
Isabella Engineer
źródło
4

Jeśli jesteś głęboko w rekurencji w ramach metody rekurencyjnej, opcją może być rzucanie i przechwytywanie wyjątków.

W przeciwieństwie do Return, która zwraca tylko jeden poziom w górę, wyjątek przerwałby również metodę rekurencyjną na kod, który go początkowo wywołał, gdzie można go przechwycić.

Audrius Meskauskas
źródło
1

użyj, returnaby wyjść z metody.

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

Oto kolejny przykład

int price = quantity * 5;
        if (hasCream) {
            price=price + 1;
        }
        if (haschocolat) {
            price=price + 2;
        }
        return price;
kiyah
źródło