黑马程序员技术交流社区

标题: java循环结构_break关键字 [打印本页]

作者: 专注的一批    时间: 2020-3-5 13:53
标题: java循环结构_break关键字
break关键字

使用场合:

适用于switch选择结构。

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

break的作用:

如果用于switch选择结构,那么作用就是跳出switch选择结构,执行switch选择结构之后的代码。

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

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、 **[难]**输入一个任意整数,判断它是否为质数,如果是质数就输出“是质数”,否则输出‘不是质数’。XM代理申请http://www.kaifx.cn/broker/xm.html质数:除了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);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2