Javaでメソッドをブレークアウトまたは終了する方法は?


123

breakJava のキーワードは、ループまたはスイッチステートメントから抜け出すために使用できます。メソッドから抜け出すために使用できるものはありますか?


2
この質問も確認する価値があるかもしれません:stackoverflow.com/q/18188123/2182237
Don

回答:


255

returnメソッドを終了するには、キーワードを使用します。

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

上記にリンクしたJavaチュートリアルから:

voidで宣言されたメソッドは値を返しません。returnステートメントを含める必要はありませんが、含めることができます。このような場合、returnステートメントを使用して制御フローブロックから分岐し、メソッドを終了することができ、次のように使用します。

return;

これはコンストラクタを終了するために機能しますか?少し変だと知っていますが、このハックが必要です。
stillanoob 2016年

44

他の回答に追加するには、手動で例外スローしてメソッドを終了することもできます。

throw new Exception();

ここに画像の説明を入力してください


18

どのようにJavaで抜け出すのですか?

回答:最善の方法: System.exit(0);

Java言語は、プログラムの通常のフローを中断できる3つのジャンプ状態を提供します。

これらには 、たとえば、breakcontinuereturnlabeled 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に置き換えるだけです。

覚えておくべきこと :

ケースラベルには、変数またはメソッド呼び出しを含む実行時式を含めることはできません

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

4

再帰的メソッド内での再帰に深く関与している場合は、例外のスローとキャッチがオプションになる場合があります。

1つ上のレベルのみを返す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;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.