วิธีแยกหรือออกจากเมธอดใน 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 ที่ฉันเชื่อมโยงไปด้านบน:

วิธีใด ๆ ที่ประกาศว่าเป็นโมฆะจะไม่ส่งคืนค่า ไม่จำเป็นต้องมีคำสั่ง return แต่อาจทำได้ ในกรณีเช่นนี้สามารถใช้คำสั่ง return เพื่อแตกแขนงออกจากบล็อกโฟลว์ควบคุมและออกจากเมธอดและใช้ดังนี้:

return;

วิธีนี้จะใช้สำหรับการออกจากตัวสร้างหรือไม่ ฉันรู้ว่ามันค่อนข้างแปลก แต่ฉันต้องการแฮ็คนี้
stillanoob

44

หากต้องการเพิ่มคำตอบอื่น ๆ คุณยังสามารถออกจากเมธอดได้โดยทิ้งข้อยกเว้นด้วยตนเอง:

throw new Exception();

ใส่คำอธิบายภาพที่นี่


18

แตกออกใน java ได้อย่างไร ??

ตอบ: วิธีที่ดีที่สุด: System.exit(0);

ภาษา Java มีสถิติการกระโดดสามแบบที่อนุญาตให้คุณขัดจังหวะโฟลว์ปกติของโปรแกรม

เหล่านี้รวมถึงการแบ่ง , คง , ผลตอบแทน , คำสั่งแบ่งที่มีป้ายกำกับ สำหรับเช่น

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

ในทำนองเดียวกันคุณสามารถใช้คำสั่งต่อได้เพียงแค่แทนที่ break ด้วย Continue ในตัวอย่างข้างต้น

สิ่งที่ต้องจำ:

เลเบลเคสไม่สามารถมีนิพจน์รันไทม์ที่เกี่ยวข้องกับการเรียกตัวแปรหรือเมธอด

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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.