java: 5-6 break

发布时间:2024年01月14日


【老韩视频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 细节说明

  1. break语句出现在多层嵌套的语句中,可以通过标签label指明要终正的是哪
    一层语句块。
  2. 标签的基本使用:
    (标签名可以自选)

请添加图片描述
3. 老韩解读:
1. break 语句可以指定退出哪层。
2. label1 是标签,名字由程序员指定.。
3. break 后指定到哪个label 就退出到哪里。
4. 在实际的开发中,老韩不建议使用标签。
5. 如果没有指定 break,默认退出最近的循环体

  1. 代码分析一下输出什么:
  • 不写标签:

【内存分析法】
内: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. 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);
	}
} 
  1. 实现登录验证,有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种都一样,推荐第二种。
    请添加图片描述
文章来源:https://blog.csdn.net/skylar0/article/details/135535495
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。