java循环结构04_break关键字

1.break关键字

使用场合:

  1. 适用于switch选择结构。

  2. 适用于for、while和do…while循环结构。

break的作用:

  1. 如果用于switch选择结构,那么作用就是跳出switch选择结构,执行switch选择结构之后的代码。
  2. 如果用于循环结构,那么作用就是跳出当前循环,执行循环之后的代码。

break执行图解:
在这里插入图片描述
注意:break之后不允许书写别的代码语句,因为break会跳出当前循环或switch,那么break之后的代码永远不会执行。

2.break练习题

1、 韩信点兵,三人一组余两人,五人一组余三人,七人一组余四人,请问最少需要多少士兵。

/** 
 * 思路分析:
 *   因为不明确循环的范围(条件),所以我们可以采用死循环来实现,假设循环变量为i。
 *	    循环变量从1开始递增,每次递增+1。循环变量就是我们需要找的士兵人数!	
 *   当i满足“i % 3 == 2 && i % 5 == 3 && i % 7 == 4”条件,则找到韩信点兵的人数。
 *		满足韩信点兵条件,那么后续循环也没必须继续进行,直接跳出循环即可。--> break关键字
 *	 注意:死循环一般和break关键字一起使用。
 */
int i = 1;
while(true) {
	if(i % 3 == 2 && i % 5 == 3 && i % 7 == 4) {
		System.out.println(i);
		break;
	}
	i++;
}
/**
 * for循环和while循环总结
 *	  核心:for循环能做的事情while循环也能实现,while循环能做的事情for循环也能实现。
 * while循环的使用场合:	
 *    a)当不明确循环次数的时候,建议使用while死循环。
 *		--> 好处:语法简洁、可读性高
 *	  b)当循环结束之后,还需要使用循环变量的时候,建议使用while循环。
 *		--> 因为while循环的循环变量就是声明在循环之外的。
 */

2、 **[难]**输入一个任意整数,判断它是否为质数,如果是质数就输出“是质数”,否则输出‘不是质数’。质数:除了1和它本身之外,不能被其他数整除的正整数称质数。

实现方案一:假设法

/**
 * 步骤分析:
 *	 a)通过Scanner获得一个整数,假设使用变量num来保存该整数。
 *   b)通过for循环获得[2, num - 1]之间的所有整数,假设循环变量为i。
 *	 c)判断num是否为质数,如果num能别[2, num - 1]之间任意一个数整除,则证明num不是一个质数!
 *		1)在判断num是否为质数之前,先假设num就是一个质数。
 *			--> 定义一个标记(flag),并且把标记值设置为true。	
 *		2)在判断num是否为质数的过程中,如果num能被[2, num - 1]之间的其中一个数整除,则证明num不是质数!
 *			--> 推翻假设,设置flag的标记值为false。
 *			--> 既然已经确定num不是一个质数,那么后续循环也没必须继续进行,使用break跳出循环即可!
 *		3)判断num是否为质数完毕后,检查flag标记的值,从而确定num是否为质数!
 *			--> 如果flag标记值为true,则证明假设成立,也就意味着num是一个质数!
 *			--> 如果flag标记值为false,则证明假设失败,也就意味着num不是一个质数!
 */
// 1.通过Scanner获得一个整数
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int num = input.nextInt();
// 2.通过for循环获得[2, num - 1]之间的所有整数
// a)在判断num是否为质数之前,先假设num就是一个质数。
boolean flag = true;	
for(int i = 2; i < num; i++) {
	// 3.判断num是否为质数。
	// b)在判断num是否为质数的过程中,如果num能被[2, num - 1]之间的其中一个数整除,则证明num不是质数!
	if(num % i == 0) {
		// 推翻假设,设置flag的标记值为false。
		flag = false;
		// 既然已经确定num不是一个质数,那么后续循环也没必须继续进行,使用break跳出循环即可!
		break;
	}
}
// c)判断num是否为质数完毕后,检查flag标记的值,从而确定num是否为质数!
if(flag) { // 证明假设成立,也就意味着num是一个质数!
	System.out.println(num + "是一个质数");
}
else { // 证明假设失败,也就意味着num不是一个质数!
	System.out.println(num + "不是一个质数");
}

实现方法二:通过分析for循环的执行顺序来实现!

/**
 * 步骤分析:
 *	 a)通过Scanner获得一个整数,假设使用变量num来保存该整数。
 *   b)通过for循环获得[2, num - 1]之间的所有整数,假设循环变量为i。
 *	 c)判断num是否为质数,如果num能别[2, num - 1]之间任意一个数整除,则证明num不是一个质数!
 *		1)在判断num是否为质数的过程中,如果num能被[2, num - 1]之间的其中一个数整除,则跳出循环。
 *		2)判断num是否为质数的循环后,判断循环遍历i的值,从而确定num是否为质数。
 */
// 1.通过Scanner获得一个整数
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int num = input.nextInt();
// 2.通过for循环获得[2, num - 1]之间的所有整数
int i = 2;
for (; i < num; i++) {
	// 3.判断num是否为质数。
	if(num % i == 0) {
		break;
	}
}
// 判断i的值,从而确定循环是否正常执行完毕
if(i == num) { // 正常执行完毕,永远无法满足“num % i == 0”的条件,也就意味着num是一个质数
	System.out.println(num + "是一个质数");
}
else { // 循环执行过程中,满足“num % i == 0”的条件,也就意味着num不是一个质数
	System.out.println(num + "不是一个质数");
}

3、**[难]**输入一个正整数,然后把该正整数转化为二进制。

/**
 * 思路分析:
 *	 a)获得输入整数的二进制位 
 *		核心思路:除以2取余数,获得余数反过来就是二进制值。	
 *		例如:假设输入的正整数为20,并且使用num变量来保存。	
 * 	   		第一趟:int bit = num % 2; num /= 2;  --> bit = 0, num = 10;
 *   		第二趟:int bit = num % 2; num /= 2;  --> bit = 0, num = 5;
 *   		第三趟:int bit = num % 2; num /= 2;  --> bit = 1, num = 2;
 *   		第四趟:int bit = num % 2; num /= 2;  --> bit = 0, num = 1;
 *   		第五趟:int bit = num % 2; num /= 2;  --> bit = 1, num = 0;
 *   	通过以上思路分析,我们发现每一趟的代码都是一模一样,所以我们使用循环来实现。
 *   		--> 因为不明确循环次数,所以我们采用死循环来实现。while(true) {}
 *   		--> 当num的结果为0时,就可以结束死循环。break关键字
 *   b)通过获得的二进制位从而得到二进制值。 
 *      核心思路:定义一个字符串,用于保存num的二进制值。
 *      	a)在循环之外,定义一个字符串(bitStr),用于保存num的二进制值
 *      	b)每获得一个二进制位,就把该二进制位插入到bitStr的最前面。
 */
// 1.通过Scanner获得一个正整数
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int num = input.nextInt();
// 2.获得正整数num的二进制位
// a)在循环之外,定义一个字符串,用于保存num的二进制值
String bitStr = "";
while (true) {
	// 获得num的二进制位
	int bit = num % 2;
	/**
	 * b)每获得一个二进制位,就把该二进制位插入到bitStr的最前面。
	 * 第一趟:bit = 0, bitStr = 0 + bitStr;    --> bitStr = "0";	
	 * 第二趟:bit = 0, bitStr = 0 + bitStr;    --> bitStr = "00";	
	 * 第三趟:bit = 1, bitStr = 1 + bitStr;    --> bitStr = "100";	
	 * 第四趟:bit = 0, bitStr = 0 + bitStr;    --> bitStr = "0100";	
	 * 第五趟:bit = 1, bitStr = 1 + bitStr;    --> bitStr = "10100";	
	 */
	bitStr = bit + bitStr;
	// 更新num的值,为下一趟循环做铺垫
	num /= 2;
	// 当num的值为0时,结束死循环
	if (num == 0) {
		break;
	}
}
System.out.println(bitStr);

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

发布了55 篇原创文章 · 获赞 0 · 访问量 766

猜你喜欢

转载自blog.csdn.net/zhoujunfeng121/article/details/104642800