文章目录
- 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的比较,使用equals
if("丁真".equals(user) && "666".equals(password)){
System.out.println("登录成功");
break;
}
chance--;
System.out.println("还有" + chance + "次机会。");
}
}
}
【知识补充:】
- string之间比较,用equals。
- 2种都一样,推荐第二种。