1. 程式人生 > 其它 >跳轉控制語句(break、continue、return)

跳轉控制語句(break、continue、return)

跳轉控制語句(break、continue、return)

1、使用跳轉控制語句的原因:
想在某個迴圈知道到某一步的時候就結束,Java就提供了break,continue和return來實現控制語句的跳轉和中斷

2、break,continue,return  它們都是關鍵字

一、break

1、break: 中斷,結束的意思

2、break的使用場景:
    ①在switch語句中使用(單獨在if語句中不能使用)
    ②在迴圈語句中使用
    ③離開①②場景外,單獨使用是沒有意義的

break在選擇結構switch語句中的使用(switch語句本身自帶break)

1、需求:輸入1-7,輸出對應的星期
        
import java.util.Scanner;  //第1步:導包
public class ControlDemo1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  //第2步:建立鍵盤錄入物件
            System.out.println("請輸入您想知道星期幾的數字:(1-7)");//第3步:鍵盤錄入資訊
            int num = sc.nextInt();	  //第4步:接收鍵盤錄入的資訊
            switch (num) {
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 5:
                    System.out.println("星期五");
                    break;
                case 6:
                    System.out.println("星期六");
                    break;
                case 7:
                    System.out.println("星期日");
                    break;
                default:
                    System.out.println("您輸入的資料有誤,請重新輸入");
                    break;
            }
        }
     }

switch語句和while語句的結合使用break

解釋說明:
	前面說到,當我們輸出對應的數字,就會得到對應的星期幾;
   	但是我們只能輸入一次,程式就會執行停止
   	如果我們想要持續多次輸入,需要用到迴圈語句while語句;

  回顧while語句:
                初始化語句;                    
            while(關係表示式){                        
                迴圈體語句;                        
                控制條件語句;                    
            }
例1:加入while語句來實現可以多次鍵盤輸入

import java.util.Scanner;    //第1步:導包
public class ControlDemo1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  //第2步:建立鍵盤錄入物件
        
        while (true) {
        	//接收鍵盤錄入資訊,需要放在while語句的內部,否則將會死迴圈
            System.out.println("請輸入您想知道星期幾的數字:(1-7)");
            int num = sc.nextInt(); 
            
            switch (num) {
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 5:
                    System.out.println("星期五");
                    break;
                case 6:
                    System.out.println("星期六");
                    break;
                case 7:
                    System.out.println("星期日");
                    break;
                default:
                    System.out.println("您輸入的資料有誤,請重新輸入");
                    break;
            }
        }

        執行的結果如下:
                請輸入您想知道星期幾的數字:(1-7)
                2
                星期二
                請輸入您想知道星期幾的數字:(1-7)
                3
                星期三
                請輸入您想知道星期幾的數字:(1-7)
                5
                星期五
                請輸入您想知道星期幾的數字:(1-7)

加入flag終止程式執行

例2:前面說到,可以連續多次鍵盤輸入,但是程式不會停止執行
	如果我們想要輸入了n次後,想停止執行,那麼就需要加入flag

import java.util.Scanner;
public class ControlDemo1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        boolean flag = true;	//定義一個boolean型別的
        while (flag) {			//while後面的括號也要改為flag
            System.out.println("請輸入您想知道星期幾的數字:(1-7)");
            int num = sc.nextInt();//接收鍵盤錄入的資訊,需要放在while內部(否則會死迴圈)
            switch (num) {
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 5:
                    System.out.println("星期五");
                    break;
                case 6:
                    System.out.println("星期六");
                    break;
                case 7:
                    System.out.println("星期日");
                    break;
                case 0:
                    flag = false;   //當匹配到0,while語句false,終止執行,跳出迴圈
                    System.out.println("歡迎下次使用");
                    break;
                default:
                    System.out.println("您輸入的資料有誤,請重新輸入");
                    break;
            }
        }
        
        執行結果如下:
                請輸入您想知道星期幾的數字:(1-7)
                1
                星期一
                請輸入您想知道星期幾的數字:(1-7)
                3
                星期三
                請輸入您想知道星期幾的數字:(1-7)
                0
                歡迎下次使用

                Process finished with exit code 0

迴圈for語句和if語句結合使用break

例:迴圈列印1-10,加入break,讓它在列印3的時候,結束for迴圈
			(列印4的時候,表示4要打印出來)
			
        public class ContralDemo2 {
            public static void main(String[] args) {

                for(int i =1;i<=10;i++){
		//輸出語句必須在if語句前面,否則只會列印1、2、3
                    System.out.println(i);
                    if(i==4){
                        break;
                    }
                }
            }
        }

                執行結果如下:
                1
                2
                3
                4

                Process finished with exit code 0
                

break的跳出
單層跳出:在當前for迴圈中使用break,只結束當前for迴圈
多層跳出:帶標籤的break,格式:標籤名 : 迴圈語句(開發中如果沒有特殊需求,一般不會去使用)

單層跳出:
				需求:九九乘法表,在內迴圈j是4的時候,我們break一下

public class ControlDemo3 {
    public static void main(String[] args) {
        for(int i =1;i<=9;i++){	 //外層控制著行
            for(int j =1;j<=i;j++){  //內層控制著列
                System.out.print(j+"*"+i+"="+(i*j)+"\t");
           //輸出語句必須在if語句前面,否則當j=4的時候不會列印,只會列印3列
                if(j==4){
                    break;
                }
            }
            System.out.println();
        }
    }

}

            執行結果為:
                 1*1=1
                 1*2=2	2*2=4	
                 1*3=3	2*3=6	3*3=9	
                 1*4=4	2*4=8	3*4=12	4*4=16
                 1*5=5	2*5=10	3*5=15	4*5=20	
                 1*6=6	2*6=12	3*6=18	4*6=24	
                 1*7=7	2*7=14	3*7=21	4*7=28	
                 1*8=8	2*8=16	3*8=24	4*8=32	
                 1*9=9	2*9=18	3*9=27	4*9=36	

            Process finished with exit code 0
    	說明:break單層跳出,只跳出了列,行還會繼續執行
多層跳出:
        在迴圈語句左邊起個名字,並加上冒號
        break後面加上哪個名字,就會跳出哪個迴圈
        
public class ControlDemo3 {
    public static void main(String[] args) {
        xiaoli:for(int i =1;i<=9;i++){
            xiaowang:for(int j =1;j<=i;j++){
                System.out.print(j+"*"+i+"="+(i*j)+"\t");
                if(j==4){
                    break xiaoli;
                }
            }
            System.out.println();
        }
    }
}

            執行結果為:
                1*1=1	
                1*2=2	2*2=4	
                1*3=3	2*3=6	3*3=9	
                1*4=4	2*4=8	3*4=12	4*4=16	
            Process finished with exit code 0
            說明:break後加外層迴圈,多層跳出,外迴圈、內迴圈都結束

二、continue

1、continue: 跳出當次迴圈(當次和當前不是一個概念)

2、使用場景:
       (1)在迴圈語句中
       (2)離開使用場景的存在是沒有意義的
例:需求:列印1-10,加入continue關鍵字,在列印3的時候加入
public class ControlDemo4 {
    public static void main(String[] args) {
        for(int i=1;i<=10;i++){
            if(i==3){
                continue;
            }
            System.out.print(i+"\t");//輸出語句要放在if語句的後面,否則打印出來的還是1-10
        }
    }
}

        執行結果為:
        1	2	4	5	6	7	8	9	10	
        Process finished with exit code 0
        在列印3的時候加入continue,則不列印3,其他都列印

三、break與continue的總結

列印1-10,當迴圈進行到4的時候:if(i==4){  待加入   }
	若加入break:
		①當前迴圈結束,如果輸出語句放在if語句的前面,會打印出:1,2,3,4
		②當前迴圈結束,如果輸出語句放在if語句的後面,會打印出:1,2,3
	若加入continue:
		①當次迴圈結束,如果輸出語句放在if語句的前面,會打印出:1,2,3,4,5,6,7,8,9,10
		②當次迴圈結束,如果輸出語句放在if語句的後面,會打印出:1,2,4,5,6,7,8,9,10

四、return

1、return: 返回,退還
2、在main方法中使用,就相當於結束了main方法,也就是結束當前java程式
3、return的作用域
public class ControlDemo4 {
    public static void main(String[] args) {
            return;	//注意return在方法中的位置1
        for(int i=1;i<=10;i++){
            System.out.println(i);
        }
    }
}
或者
public class ControlDemo4 {
    public static void main(String[] args) {
        for(int i=1;i<=10;i++){
            return;	//注意return在方法中的位置2
            System.out.println(i);
        }
    }
}
或者
public class ControlDemo4 {
    public static void main(String[] args) {
        int a =10;
        return;		//注意return在方法中的位置2
        System.out.println(a);
    }
}
以上這種情況都會報錯
==============================================================
例1:
public class ControlDemo4 {
    public static void main(String[] args) {
        for(int i=1;i<=10;i++){
        System.out.println(i);
            return;	//注意return在方法中的位置
        }
    }
}
該程式碼最後輸出的結果為:1

4、總結:

(1)return單獨使用時,當return後面緊貼著有需要執行的語句,那麼系統就會報錯

(2)當return放在控制語句中,並且後面沒有要執行的語句,系統不會報錯,但是執行結 果會發生變化(例1)