文章目录
- 1. break
- 1.1 介绍
- 1.2 语法和流程图
- 1.3 入门练习
- 1.4 细节说明
- 1.5 练习
【老韩视频p137-】
1. break
- 看个需求:随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次?
【思路分析:循环,但是循环的次数不知道. -> break。
当某个条件满足时,终止循环 通过该需求可以说明其它流程控制的必要性,比如 break】
public class Test {public static void main(String[] args) {//随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次?for(int i = 1; i <= 10; i++){System.out.println((int)(math.random() * 100) + 1);}}
}
1.1 介绍
- break 语句用于终止语句的执行,一般使用在 switch 或者循环 [for , while , do-while]中。
1.2 语法和流程图
- 以while循环为例,讲解break语句。【只要执行break,就直接结束循环。】
1.3 入门练习
public class Break01 {public static void main(String[] args) {//测试代码for(int i = 1; i < 10; i++){if(i == 3){break;}System.out.println("i=" + i);}}
}
【内存分析法】
内:i -> 0 -> 1 -> 2 -> 3
执行:i=0, i=1, I=2
1.4 细节说明
- break语句出现在多层嵌套的语句中,可以通过标签label指明要终正的是哪
一层语句块。 - 标签的基本使用:
(标签名可以自选)
3. 老韩解读:
1. break 语句可以指定退出哪层。
2. label1 是标签,名字由程序员指定.。
3. break 后指定到哪个label 就退出到哪里。
4. 在实际的开发中,老韩不建议使用标签。
5. 如果没有指定 break,默认退出最近的循环体。
- 代码分析一下输出什么:
- 不写标签:
【内存分析法】
内:j -> 0 -> 1 -> 2 -> 3 -> 4
I -> 0 -> 1 -> 2 【-> 0 -> 1 -> 2 【-> 0 -> 1 -> 2 【-> 0 -> 1 -> 2 ->
执行:i=0, i=1, 结束, i=0, i=1, 结束, i=0, i=1, 结束, i=0, i=1, 结束
public class Break01 {public static void main(String[] args) {//label1:for(int j = 0; j < 4; j++){label2:for(int i = 0; i < 10; i++){if(i == 2){break; //等价于 break label2}System.out.println("i = " + i);}}}
}
- break + 外层标签
内:j -> 0
I -> 0 -> 1 -> 2
执行:i=0, i=1, 结束外循环
public class Break01 {public static void main(String[] args) {//label1:for(int j = 0; j < 4; j++){label2:for(int i = 0; i < 10; i++){if(i == 2){break label1; }System.out.println("i = " + i);}}}
}
1.5 练习
- 1-100 以内的数求和,求出 当和 第一次大于 20 的当前数 【for + break】。
public class Break01 {public static void main(String[] args) {//1-100 以内的数求和,求出 当和 第一次大于20的当前数 【for + break】。int sum = 0;//累积和int n = 1; //定义一个变量,可以在循环外输出i。int boundary = 20;for(int i = 1; i <= 100; i++){sum += i;if(sum > boundary){ //判断System.out.println("和>20时当前数i = " + i);n = i;break;}}System.out.println("当前数 = " + n);}
}
- 实现登录验证,有3次机会,如果用户名为"丁真",密码"666"提示登录成功,否则提示还有几次机会,请使用for+break 完成。
public class Break02 {public static void main(String[] args) {//实现登录验证,有3次机会,如果用户名为"丁真",密码"666"提示登录成功,//否则提示还有几次机会,请使用for+break 完成。//思路://1. 创建Scanner对象,接收输入//2. 定义变量保存用户名+密码:string user;string password。//3. 循环3次,如果满足条件,就提前退出。//4. 定义变量,记录还有几次机会chance。import java.util.Scanner;Scanner myScanner = new Scanner(System.in);string user = "";string password = "";int chance = 3;for(int i = 1; i <= 3; i++){System.out.println("请输入用户名");user = myScanner.next();System.out.println("请输入密码");password = myScanner.next();//开始比较用户名密码是否正确//补充//string的比较,使用equalsif("丁真".equals(user) && "666".equals(password)){System.out.println("登录成功");break;}chance--;System.out.println("还有" + chance + "次机会。");}}
}
【知识补充:】
- string之间比较,用equals。
- 2种都一样,推荐第二种。