跳转控制语句(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)

posted @ 2021-12-01 16:25  阿伟宝座  阅读(424)  评论(0)    收藏  举报