JAVA java学习(38)——————java流程控制之return、break、continue

三者在循环中:
return:跳出循环直到代码块结束(跳出当前方法的循环);
break:跳出循环进行循环之后的代码;
continue:跳出当前次循环,进行新的下一次循环.

return

return 关键字并不是专门用于结束循环的,return 语句用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达式的 return 语句。

如果一个方法使用了 return 语句并且后面跟有该方法返回类型的值,那么调用此方法后,所得到的结果为该方法返回的值。

public static int add(int x,int y){
		return x+y;//有返回类型,返回方法指定类型的返回值
	}

return在循环中:

public static int add(int x){
		 for (i = 0; i < 5; i++) {
            if(i==3){
                return i; //用于方法的结束
            }
            System.out.println(String.format("i=%d",i));
        }
        //return 之后的语句将不会被执行
        System.out.println("return语句之后"+getInfo());
	}
break

某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环。此时,可以使用 break 来完成这个功能。

break 用于完全结束一个循环,跳出循环体。不管是哪种循环在循环体中遇到 break,系统将完全结束该循环,开始执行循环之后的代码。

在 Java 中,break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列、使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能。

1.使用 break 语句直接强行退出循环(break 不带标签)
例1:

import java.util.Scanner;

/**
 	功能:有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服。最后打印总共买了几件衣服
	技能:
		1.多重循环
			外层循环 5家专卖店内层循环每家3件衣服
		2.多重循环中使用break
			每家(最多)购买3件 break 当前循环
			最多5家专卖店   break 退出外层循环
				1.方式1:标签不推荐
				2.方式2:符号量 flag
	步骤
	1.有5家衣服专卖店,每家购买3件
	2.有5家衣服专卖店,每家最多购买3件
	3.最多5家衣服专卖店,每家最多购买3件
	
	@豆皮没有豆
 */

public class YuFa34 {

	private static Scanner inputtext;

	public static void main(String[] args) {
		inputtext = new Scanner(System.in);
		int  count = 0;
		boolean  flag = true;
		//外层循环:5家专卖店
		for(int i=1;i<=5;i++){
			//1.提示信息
			System.out.println("顾客进入第"+i+"家专卖店");
			//2.在某一家专卖店购买衣服
			for(int j=1;j<=3;j++){
				//提示是否买衣服
				System.out.println("1.购买 2.下一家 3.直接回家");
				int select = inputtext.nextInt();
				if(select == 1){
					//购买衣服
					System.out.println("\t顾客在该专卖店购买了第"+j+"件衣服");
					//统计数量
					count++;
				}else if(select ==2){
					break;	//退出当前循环			
				}else{
					flag = false;
					break;
				}
			}
			//3.不管3件退出还是1,2件退出,都会跳到该位置
			if(!flag){
				break;
			}
		}
		System.out.println("一共购买了"+count+"件衣服");


	}

}

2. 使用 break 语句实现 goto 的功能(break 带标签)
有时候,在嵌套很深的循环语句中会发生一些不可预料的事情。此时可能更加希望跳到嵌套的所有循环语句之外。通过添加一些额外的条件判断实现各层循环的检测很不方便。
幸运的是,Java 与 C++ 不同,Java 提供了一种带标签的 break 语句,用于跳出多重嵌套的循环语句。
break 语句可以实现 goto 的功能,并且 Java 定义了 break 语句的一种扩展形式来处理退出嵌套很深的循环这个问题。
通过使用扩展的 break 语句,可以终止执行一个或者几个任意代码块,这些代码块不必是一个循环或一个 switch 语句的一部分。同时这种扩展的 break 语句带有标签,可以明确指定从何处重新开始执行。
break 除了具有 goto 退出深层循环嵌套作用外,还保留了一些程序结构化的特性。
标签 break 语句的通用格式如下:

break label;

label 是标识代码块的标签。当执行这种形式的 break 语句时,控制权被传递出指定的代码块。被加标签的代码块必须包围 break 语句,但是它不需要直接包围 break 的块。也就是说,可以使用一个加标签的 break 语句来退出一系列的嵌套块,但是不能使用 break 语句将控制权传递到不包含 break 语句的代码块。

用标签(label)可以指定一个代码块,标签可以是任何合法有效的 Java 标识符,后跟一个冒号。加上标签的代码块可以作为 break 语句的对象,使程序在加标签的块的结尾继续执行。
例:

    public class GotoDemo {
        public static void main(String[] args) {
            label: for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 8; j++) {
                    System.out.println(j);
                    if (j % 2 != 0) {
                        break label;
                    }
                }
            }
        }
    }

以上程序的执行结果为:

0
1

这里的 label 是标签的名称,可以为 Java 语言中任意合法的标识符。标签语句必须和循环匹配使用,使用时书写在对应的循环语句的上面,标签语句以冒号结束。如果需要中断标签语句对应的循环,可以采用 break 后面跟标签名的方式。
如在上面代码中,当 j 为 1 时,“j%2!=0”条件表达式成立,则 label 标签所代表的最外层循环终止。

注意:通常紧跟 break 之后的标签,必须在 break 所在循环的外层循环之前定义才有意义。

continue

有时强迫一个循环提早反复是有用的,也就是,你可能想要继续运行循环,但是要忽略这次重复剩余的循环体的语句,所以 Java 提供了 continue 语句。continue 语句是 break 语句的补充。

与 break 语句一样, 它将中断正常的控制流程。continue 语句将控制转移到最内层循环的首部。
continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。

注意:continue 语句只能用在 while 语句、for 语句或者 foreach 语句的循环体之中,在这之外的任何地方使用它都会引起语法错误。

在循环体中使用 continue 语句有两种方式可以带有标签,也可以不带标签。语法格式如下:

continue //不带标签
continue label //带标签,label是标签名

例:

/**
 * 
 * 
 * @豆皮没有豆
 */
public class YuFa35 {

	public static void main(String[] args) {
		for (int i = 0; i <10; i++) {
		    if (i == 3) {
		        continue;
		    }
		    System.out.println("Count is: " + i);
		}

	}

}

在上述程序代码中,当条件 i==3 的时候执行 continue 语句,continue 语句会终止本次循环,循环体中 continue 之后的语句将不再执行,接着进行下次循环,所以输出结果中没有 3。程序运行结果如下:
在这里插入图片描述例:带标签的 continue 语句示例代码如下:

    public static void main(String[] args) {
        label1: for (int x = 0; x < 5; x++) {
            for (int y = 5; y > 0; y--) {
                if (y == x) {
                    continue label1;
                }
                System.out.println(x+","+y);
            }
        }
        System.out.println("Game Over!");
    }

默认情况下,continue 只会跳出最近的内循环(代码第 3 行的 for 循环),如果要跳出代码第 2 行的外循环,可以为外循环添加一个标签 label1,然后在第 5 行的 continue 语句后面指定这个标签 label1,这样当条件满足执行 continue 语句时,程序就会跳转出外循环。
在这里插入图片描述
上一篇:JAVA java学习(37)——————java方法的简单介绍

下一篇:JAVA java学习(39)——————项目实战(实现淡旺季飞机票打折)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆皮没有豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值