6.4_[Java 数组]-详解 break/continue 跳转语句

##################################################

目录

详解 break/continue 跳转语句

b/c 跳转语句对二重循环的影响

break 示例程序

contiune 示例程序

continue 搭配 break

模拟 ATM 机


##################################################

详解 break/continue 跳转语句

——————————

b/c 跳转语句对二重循环的影响

        break/continue 还记得吗?

        当我们希望在某种条件下 想让程序 不按正常流程执行
        可以用 break/continue
        但是这个跳转在二重循环中 起到什么作用呢?。。

        当 break/continue 在内循环时 只会影响内循环的执行流程
        而不会对外循环的执行流程有丝毫影响

 所以 她们的不同 仅仅是程序的跳转位置不同

    break
break 会跳出本层循环 提前结束此循环代码段
break 会直接跳出整个内循环代码段 即 结束此 遍 内循环
忘了吗?外跑一趟,内跑一遍!
执行在内循环后的代码段 若没有 则跳到外循环继续执行

	continue
continue 是跳出本次循环 继续下一次循环
内循环中的 continue 就是 结束此次循环 继续下一次内循环
完全不影响内循环块以外的代码段

——————————

break 示例程序

        需求:

你的 MM 要求你跟着逛街 一共有 10 家店 每家限购 5 件衣服
你的 MM 要求 必须把这十家店逛完
一家店买 5 件衣服 只要不离开 就一直买 5 件衣服。。
中途退出就买 1 件衣服
那 一共买了 几件衣服?。。

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
欢迎光临第 1 家店 : 灰太狼娃娃店
要离开吗?(y/n) <<< n
。。买了 5 件衣服

要离开吗?(y/n) <<< n
。。买了 5 件衣服

要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 2 家店 : 喜阳阳店
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 3 家店 : 一路向西
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 4 家店 : 一路向东
要离开吗?(y/n) <<< n
。。买了 5 件衣服

要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 5 家店 : 一路欢喜
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 6 家店 : 一路嘻哈
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 7 家店 : 牛仔专卖店
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 8 家店 : 拖拉板子
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 9 家店 : 风中的黄裤衩
要离开吗?(y/n) <<< y
还好,只买了一件。。

欢迎光临第 10 家店 : 冯提莫儿
要离开吗?(y/n) <<< n
。。买了 5 件衣服

要离开吗?(y/n) <<< y
还好,只买了一件。。

一共买了 30 件衣服 555..
.

C:\Users\byme\javaTest>

        code:

import java.util.Scanner;

public class test {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int count = 0;    /* 计数 记录件数 */
		String out = "";    /* 记录 滚出 */
		String Shop[] = new String[] { "灰太狼娃娃店", "喜阳阳店",
			"一路向西", "一路向东",
			"一路欢喜", "一路嘻哈",
			"牛仔专卖店", "拖拉板子",
			"风中的黄裤衩", "冯提莫儿" };    /* 店名 */

		for ( int i = 1; i <= 10; i ++ ) {

			System.out.println ( "欢迎光临第 " + i + " 家店 : " + Shop[i-1] );

			for ( int j = 1; j <= 10; j ++ ) {

				System.out.print ( "要离开吗?(y/n) <<< " );
				out = input.next();

				if ( out.equals("y") )
				/* 如果离开 买了 1 件 */
					break;

				/* 没有离开 买了 5 件 */
				System.out.println ( "。。买了 5 件衣服\n" );
				count += 5;    /* 什么是 += 还记得吗? count = count + 5; */
			}

			System.out.println ( "还好,只买了一件。。\n" );
			count ++;
		}

		System.out.println ( "一共买了 " + count + " 件衣服 555.." );
		out = input.next();    /* 输入任意内容回车结束程序.. */
	}
}

——————————

contiune 示例程序

        需求:

计算积分在 100 点积分以上的用户有几个?

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
请输入一共有几组用户 <<< 3
请输入每组有几个用户 <<< 5

请输入 5 个用户的积分 当前,第 1 组
第 1 位用户的积分 <<< 76
第 2 位用户的积分 <<< 58
第 3 位用户的积分 <<< 109
第 4 位用户的积分 <<< 103
第 5 位用户的积分 <<< 300
第 1 组用户平均积分为 >>> 129.2

请输入 5 个用户的积分 当前,第 2 组
第 1 位用户的积分 <<< 56
第 2 位用户的积分 <<< 32
第 3 位用户的积分 <<< 87
第 4 位用户的积分 <<< 65
第 5 位用户的积分 <<< 90
第 2 组用户平均积分为 >>> 66.0

请输入 5 个用户的积分 当前,第 3 组
第 1 位用户的积分 <<< 120
第 2 位用户的积分 <<< 23
第 3 位用户的积分 <<< 454
第 4 位用户的积分 <<< 56
第 5 位用户的积分 <<< 7
第 3 组用户平均积分为 >>> 132.0

积分在 100 分以上的用户 有 5 人

C:\Users\byme\javaTest>

        code:

import java.util.*;

public class test {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int money_P = 0;    /* 记录有钱人 */
		double SUM = 0.0;    /* 总积分 */

		/* 组数量 */
		System.out.print ( "请输入一共有几组用户 <<< " );
		int group = input.nextInt();
		double sum[] = new double[group];    /* 平均积分数组 */

		/* 每组用户数量 */
		System.out.print ( "请输入每组有几个用户 <<< " );
		int user_num = input.nextInt();
		int user[] = new int[user_num];    /* 用户数量数组 */

		System.out.println();
		for ( int i = 0; i < group; i ++ ) {
		/* 外层循环控制组数量 */

			SUM = 0.0;    /* 总积分归零 */

			System.out.println ( "请输入 " + user_num + " 个用户的积分 当前,第 " + (i + 1) + " 组" );
			for ( int j = 0; j < user.length; j ++ ) {
			/* 内层循环控制每组用户数量 */

				System.out.print ( "第 " + (j + 1) + " 位用户的积分 <<< " );
				user[j] = input.nextInt();

				SUM += user[j];    /* 总和 初始为 0 = 上次和 + 此次 */

				if ( user[j] < 100 )
				/* 卡住穷鬼 */
					continue;    /* 穷鬼 跳过不管 */
				money_P ++;    /* 有钱人 + 1 */
			}

			sum[i] = SUM / user.length;    /* 计算平均分 */
			System.out.println ( "第 " + (i + 1) + " 组用户平均积分为 >>> "
				+ sum[i] + "\n" );
		}
		System.out.println ( "积分在 100 分以上的用户 有 " + money_P + " 人" );
	}
}

        改进一下程序

        升级需求:

循环录入用户积分然后计算用户平均积分
积分在 100 以上的有几人
添加一个功能:
积分大于 90 的用户平均分有多少?

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
请输入一共有几组用户 <<< 4
请输入每组有几个用户 <<< 2

请输入 2 个用户的积分 当前,第 1 组
第 1 位用户的积分 <<< 100
第 2 位用户的积分 <<< 200
第 1 组用户平均积分为 >>> 150.0

请输入 2 个用户的积分 当前,第 2 组
第 1 位用户的积分 <<< 56
第 2 位用户的积分 <<< 32
第 2 组用户平均积分为 >>> 44.0

请输入 2 个用户的积分 当前,第 3 组
第 1 位用户的积分 <<< 79
第 2 位用户的积分 <<< 92
第 3 组用户平均积分为 >>> 85.5

请输入 2 个用户的积分 当前,第 4 组
第 1 位用户的积分 <<< 132
第 2 位用户的积分 <<< 99
第 4 组用户平均积分为 >>> 115.5

积分在 100 分以上的用户 有 3 人
积分大于 90 的用户平均分 为 49 %

C:\Users\byme\javaTest>java test
请输入一共有几组用户 <<< 4
请输入每组有几个用户 <<< 2

请输入 2 个用户的积分 当前,第 1 组
第 1 位用户的积分 <<< 100
第 2 位用户的积分 <<< 200
第 1 组用户平均积分为 >>> 150.0

请输入 2 个用户的积分 当前,第 2 组
第 1 位用户的积分 <<< 56
第 2 位用户的积分 <<< 32
第 2 组用户平均积分为 >>> 44.0

请输入 2 个用户的积分 当前,第 3 组
第 1 位用户的积分 <<< 79
第 2 位用户的积分 <<< 92
第 3 组用户平均积分为 >>> 85.5

请输入 2 个用户的积分 当前,第 4 组
第 1 位用户的积分 <<< 132
第 2 位用户的积分 <<< 99
第 4 组用户平均积分为 >>> 115.5

积分在 100 分以上的用户 有 3 人
积分大于 90 的用户平均分 为 49 %

C:\Users\byme\javaTest>java test
请输入一共有几组用户 <<< 10
请输入每组有几个用户 <<< 5

请输入 5 个用户的积分 当前,第 1 组
第 1 位用户的积分 <<< 100
第 2 位用户的积分 <<< 200
第 3 位用户的积分 <<< 300
第 4 位用户的积分 <<< 400
第 5 位用户的积分 <<< 500
第 1 组用户平均积分为 >>> 300.0

请输入 5 个用户的积分 当前,第 2 组
第 1 位用户的积分 <<< 34
第 2 位用户的积分 <<< 54
第 3 位用户的积分 <<< 675
第 4 位用户的积分 <<< 54
第 5 位用户的积分 <<< 43
第 2 组用户平均积分为 >>> 172.0

请输入 5 个用户的积分 当前,第 3 组
第 1 位用户的积分 <<< 23
第 2 位用户的积分 <<< 43
第 3 位用户的积分 <<< 54
第 4 位用户的积分 <<< 65
第 5 位用户的积分 <<< 76
第 3 组用户平均积分为 >>> 52.2

请输入 5 个用户的积分 当前,第 4 组
第 1 位用户的积分 <<< 78
第 2 位用户的积分 <<< 65
第 3 位用户的积分 <<< 56
第 4 位用户的积分 <<< 76
第 5 位用户的积分 <<< 900
第 4 组用户平均积分为 >>> 235.0

请输入 5 个用户的积分 当前,第 5 组
第 1 位用户的积分 <<< 324
第 2 位用户的积分 <<< 45345
第 3 位用户的积分 <<< 565
第 4 位用户的积分 <<< 676
第 5 位用户的积分 <<< 56
第 5 组用户平均积分为 >>> 9393.2

请输入 5 个用户的积分 当前,第 6 组
第 1 位用户的积分 <<< 45
第 2 位用户的积分 <<< 4345
第 3 位用户的积分 <<< 34
第 4 位用户的积分 <<< 567
第 5 位用户的积分 <<< 54
第 6 组用户平均积分为 >>> 1009.0

请输入 5 个用户的积分 当前,第 7 组
第 1 位用户的积分 <<< 6565
第 2 位用户的积分 <<< 768
第 3 位用户的积分 <<< 34
第 4 位用户的积分 <<< 6565
第 5 位用户的积分 <<< 343
第 7 组用户平均积分为 >>> 2855.0

请输入 5 个用户的积分 当前,第 8 组
第 1 位用户的积分 <<< 232
第 2 位用户的积分 <<< 546
第 3 位用户的积分 <<< 76
第 4 位用户的积分 <<< 45
第 5 位用户的积分 <<< 43
第 8 组用户平均积分为 >>> 188.4

请输入 5 个用户的积分 当前,第 9 组
第 1 位用户的积分 <<< 4534
第 2 位用户的积分 <<< 454
第 3 位用户的积分 <<< 5456
第 4 位用户的积分 <<< 666
第 5 位用户的积分 <<< 777
第 9 组用户平均积分为 >>> 2377.4

请输入 5 个用户的积分 当前,第 10 组
第 1 位用户的积分 <<< 888
第 2 位用户的积分 <<< 999
第 3 位用户的积分 <<< 100
第 4 位用户的积分 <<< 10000
第 5 位用户的积分 <<< 1111
第 10 组用户平均积分为 >>> 2619.6

积分在 100 分以上的用户 有 29 人
积分大于 90 的用户平均分 为 222 %

C:\Users\byme\javaTest>

        code:

import java.util.*;

public class test {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int money_P = 0;    /* 记录有钱人 */
		double SUM = 0.0;    /* 总积分 */

		/* 组数量 */
		System.out.print ( "请输入一共有几组用户 <<< " );
		int group = input.nextInt();
		double sum[] = new double[group];    /* 平均积分数组 */

		/* 每组用户数量 */
		System.out.print ( "请输入每组有几个用户 <<< " );
		int user_num = input.nextInt();
		int user[] = new int[user_num];    /* 用户数量数组 */

		int G[] = new int[100];    /* 高于 90 的用户积分 G[0] 保留 临时计算用 */
		int G_num = 0;    /* 高于 90 的数量 */

		System.out.println();
		for ( int i = 0; i < group; i ++ ) {
		/* 外层循环控制组数量 */

			SUM = 0.0;    /* 总积分归零 */
			System.out.println ( "请输入 " + user_num + " 个用户的积分 当前,第 " + (i + 1) + " 组" );

			for ( int j = 0; j < user.length; j ++ ) {
			/* 内层循环控制每组用户数量 */

				System.out.print ( "第 " + (j + 1) + " 位用户的积分 <<< " );
				user[j] = input.nextInt();
				SUM = SUM + user[j];    /* 总和 初始为 0 = 上次和 + 此次 */

				if ( user[j] > 90 )
				/* 记录高于 90 的积分 */
					G[j+1] = user[j];

				if ( user[j] < 100 )
				/* 卡住穷鬼 跳过不管 */
					continue;

				money_P ++;    /* 有钱人 + 1 */
			}

			sum[i] = SUM / user.length;    /* 计算平均分 */
			System.out.println ( "第 " + (i + 1) + " 组用户平均积分为 >>> "
				+ sum[i] + "\n" );
		}

		System.out.println ( "积分在 100 分以上的用户 有 " + money_P + " 人" );
		for ( int i = 1; i <= G.length - 1; i ++ ) {

			if ( G[i] == 0 )
				break;

			G_num ++;
			G[0] = G[i];
		}

		System.out.println ( "积分大于 90 的用户平均分 为 " + (G[0]/G_num) + " %" );
	}
}

——————————

continue 搭配 break

        需求:

买商品 单价超过 100 以上的商品 享受 8 折优惠
一共有多少商品被打折?

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
有几个顾客 <<< 4
每人买了几个东东 <<< 2

请输入第 1 个人的 2 件东东的价格 <<<
99
100
第 1 个人一共有 0 件商品享受八折优惠..
还要继续吗?(y/n) >>> y

请输入第 2 个人的 2 件东东的价格 <<<
101
100
第 2 个人一共有 1 件商品享受八折优惠..
还要继续吗?(y/n) >>> y

请输入第 3 个人的 2 件东东的价格 <<<
200
300
第 3 个人一共有 2 件商品享受八折优惠..
还要继续吗?(y/n) >>> n

程序结束 ..

C:\Users\byme\javaTest>

        code:

import java.util.Scanner;

public class test {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		System.out.print ( "有几个顾客 <<< " );
		int P = input.nextInt();;
		System.out.print ( "每人买了几个东东 <<< " );
		int W = input.nextInt();

		for ( int i = 0, count = 0; i < P; i ++ ) {
		/* 分析需求 发现 外层控制顾客数量 i < 顾客 */

			System.out.println ( "\n请输入第 " + (i + 1) + " 个人的 " + W + " 件东东的价格 <<< " );
			for ( int j = 0; j < W; j ++ ) {
			/* 内层控制 每人买多少件商品 j < 商品 */

				double M = input.nextDouble();    /* 循环录入价格 */

				/* 判断是否可以折扣 折扣就计数 不折扣就 continue */
				if ( M > 100.0 )
					count ++;
				if ( M < 100.0 )
					continue;
			}

			System.out.println ( "第 " + (i + 1) + " 个人一共有 " + count + " 件商品享受八折优惠.." );
			count = 0;    /* 计数归零 */

			System.out.print ( "还要继续吗?(y/n) >>> " );
			String Y_N = input.next();

			if ( Y_N.equals( "n" ) )
				break;
			if ( Y_N.equals ( "y" ) )
				continue;
		}

		System.out.println ( "\n程序结束 .." );
	}
}

——————————

模拟 ATM 机

        需求:

模拟 ATM 取款过程
密码最多输入 3 次 超过限制次数 则提示: 密码错误,请取卡
密码若正确 提示输入金额 一次 100 一次取钱最低为 0 最高 1000
如果符合要求 输出钱数 提示: 交易完成,请取卡
否则提示 重新输入金额

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
请输入密码 <<< 111
请输入密码 <<< 111
请输入密码 <<< 111
密码错误,请取卡!

C:\Users\byme\javaTest>java test
请输入密码 <<< 111111
请输入金额 <<< 999
您输入的金额不合法,请重新输入 <<< 67
您输入的金额不合法,请重新输入 <<< 99
您输入的金额不合法,请重新输入 <<< 0
您取了 0 ¥
交易成功,请取卡!

C:\Users\byme\javaTest>java test
请输入密码 <<< 111111
请输入金额 <<< 2000
您输入的金额不合法,请重新输入 <<< 1001
您输入的金额不合法,请重新输入 <<< 456
您输入的金额不合法,请重新输入 <<< 10000
您输入的金额不合法,请重新输入 <<< 100
您取了 100 ¥
交易成功,请取卡!

C:\Users\byme\javaTest>

        code:

import java.util.*;

public class test {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int Pass = 000000, Amount = 0, Number_1 = 0, Number_2 = 0;

		for ( int i = 1; i <= 3; i ++ ) {
		/* 外循环控制输入密码次数 && 验证是否通过 未通过则 continue 继续输入 */

			System.out.print ( "请输入密码 <<< " );
			Pass = input.nextInt();

			if ( Pass != 111111 ) {
			/* 假设密码为 111111 */

				if ( i == 3 )
				/* 执行到这里 证明失败 3 次 自动结束外循环 外循环后面无代码段 即结束程序 */
					System.out.println ( "密码错误,请取卡!" );

				/* 执行到这里 证明不合法 跳转到下一次外循环 重新输入再检查 */
				continue;
			}

			System.out.print ( "请输入金额 <<< " );
			/* 经典的死循环形式 还记得吗? 不过我们有跳转语句控制程序流程! */
			for ( ; ; ) {
			/* 内循环控制输入金额 金额合法 则输出 && 提示 && break 跳出 否则 continue 跳到内循环继续接收输入 */

				Amount = input.nextInt();
				/* 分解位数 */
				Number_1 = Amount % 10;    /* 分解得到 个 位数 */
				Number_2 = Amount / 10 % 10;    /* 分解得到 十 位数 */

				if ( (Amount < 0) || (Amount > 1000) || (Number_1 != 0) || (Number_2 != 0) ) {
				/* 很严谨的条件 大于 0 小于 1000 个位、十位必须为 0 只能为 1000 以内的整百值或为 0 */

					/* 执行到这里 证明不合法 跳转到下一次内循环 重新输入再检查 */
					System.out.print ( "您输入的金额不合法,请重新输入 <<< " );
					continue;
				}

				/* 执行到这里 证明取完了 可以结束程序了 退出内循环 继续外循环的其余代码 */
				System.out.println ( "您取了 " + Amount + " ¥\n交易成功,请取卡!" );
				break;
			}

			/* 执行到这里 证明取完了 并且密码正确 可以结束程序了 退出外循环 结束程序! */
			break;
		}
	}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

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

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

打赏作者

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

抵扣说明:

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

余额充值