Java——break、continue和return

news2024/11/26 9:34:58

一、break

break语句用于立即终止最内层的循环或switch语句。它是一种控制流语句,能够在满足特定条件时跳出循环或结束switch块的执行。

1、在循环中使用

1)一般的 break

break语句可以用于forwhiledo-while循环中。当在循环中遇到break语句时,循环会立即终止,程序控制流将跳转到循环之后的第一条语句。

下面给出一个例子:

生成 1-100 之间的整数,当生成出 66 这个数字时循环停止。

public class Test {
	public static void main(String[] args) {
		int num = 0;
		while(true) {
			num = (int)(Math.random() * 100) + 1;
			System.out.print(num + " ");
			if(num == 66) {
				break;
			}
		}
	}
}

运行结果:

可以发现生成了 66 后循环就停止了。

又例如,输入密码,假设密码是 123,三次机会。如果输入正确则退出循环。

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int chance = 3;
		while(chance > 0) {//三次机会
			System.out.println("请输入密码");
			String password = input.next();

			if("123".equals(password)) {//判断输入的密码是否等于123
				System.out.println("密码正确");
				break;
			}
			chance--;
		}
	}
}

运行结果:

可以看到,虽然是第二次循环,但是我们输入了正确的密码,所以通过 break 退出了循环。

这里有一个新的方法:

String类的equals方法用于比较两个字符串的内容是否相同。具体来说,equals方法比较的是字符串中的每一个字符是否相同,并且字符的顺序也必须一致。如果两个字符串相等,则返回true,否则返回false

这里的形式最好写成这样:

"123".equals(password)

假设我们有一个变量password,它可能是null。如果直接调用password.equals("123"),而password恰好是null,会导致NullPointerException

String password = null;
if (password.equals("123")) { // 这里会抛出 NullPointerException
    // do something
}

为了避免这种潜在的异常,我们可以把常量字符串放在前面,这样即使passwordnull,也不会抛出异常:

String password = null;
if ("123".equals(password)) { // 这里不会抛出 NullPointerException
    // do something
}

2)带标签的 break

Java还支持带标签的break,用于终止指定标签的外层循环。这在嵌套循环中非常有用,可直接跳出多层循环。

outerLoop:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (j == 3) {
            break outerLoop; // 跳出 outerLoop 标签标记的循环
        }
        System.out.println("i: " + i + ", j: " + j);
    }
}

运行结果:

可以发现,在 j == 3 时,带标签的 break 直接终止了外层循环。

对于多层的循环,例如三层循环,也可以使用标签来标记第二层循环,使用带标签的 break 来终止第二层循环。这样也就是说可以使用带标签的 break 来终止任意一层循环。

对于这种形式,在实际开发中要尽量不用,实际上在实际开发中循环就最好不要超出三层。因为要保证较好的可读性。

2、在 switch 中使用

break语句在switch语句中非常常见,用于终止特定的case块。如果没有break语句,程序会继续执行后续的case块(即使这些块的条件不满足),直到遇到break语句或switch语句结束为止。这种行为称为“贯穿”或“fall-through”。

int day = 3;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    case 4:
        System.out.println("Thursday");
        break;
    case 5:
        System.out.println("Friday");
        break;
    default:
        System.out.println("Weekend");
        break;
}
// 输出: Wednesday

二、continue

1、一般的 continue

continue语句用于跳过当前循环迭代的剩余部分,并立即开始下一次循环迭代。它是一种控制流语句,可以用于forwhiledo-while循环中。continue语句有助于优化代码,减少嵌套层次,提高代码的可读性。

例子:

打印 1~6 和 10 ~ 20 这几个数字。

public class Test {
	public static void main(String[] args) {
		int i = 1;
		for(i = 1; i <= 20; i++) {
			if(i > 6 && i < 10) {
				continue;
			}
			System.out.print(i + " ");
		}
	}
}

运行结果:

2、带标签的 continue

Java还支持带标签的continue,用于跳过指定标签的外层循环的当前迭代,并立即开始该外层循环的下一次迭代。这在嵌套循环中非常有用,可以控制多层循环的流向。

示例:

public class Test {
	public static void main(String[] args) {
		outerLoop:
		for (int i = 1; i <= 3; i++) {
		    for (int j = 1; j <= 3; j++) {
		        if (j == 2) {
		            continue outerLoop; // 进入 outerLoop 标签标记的循环的下一次迭代
		        }
		        System.out.println("i: " + i + ", j: " + j);
		    }
		}
	}
}

运行结果:

可以发现当 j == 2 时就直接 continue 跳过标签标记的最外层循环的当前迭代开始下一次迭代了。

三、return

return语句用于从方法中返回一个值或直接终止方法的执行。它是控制方法执行流程的重要工具。以下是关于Java中return语句的详细介绍:

 return语句的作用

  • 返回值return语句可以将一个值从方法中返回给调用者。这个值的类型必须与方法声明中的返回类型一致。
  • 终止方法执行:当return语句被执行时,方法的执行立即结束,控制权返回到方法的调用者。

 return语句的形式

  • 无返回值(void方法):在void类型的方法中,return语句可以单独使用,用于提前终止方法。
  • 有返回值:在有返回类型的方法中,return语句必须返回一个与方法声明中返回类型一致的值。

如果 return 放到 main 方法中,则会终止程序。

例如:

public class Test {
	public static void main(String[] args) {
		for(int i = 0; i < 3; i++) {
			if(i == 1) {
				return;
			}
			System.out.println("i = " + i);
		}
	}
}

这里在 i == 1 时,main 方法会退出,也就是程序退出。所以运行结果为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP质量不够好,可以使用高质量的代理IP吗?

在当今互联网时代&#xff0c;IP代理是一个不可或缺的工具&#xff0c;但许多人可能对它的原理和应用感到困惑。IP代理涉及IP地址的使用和切换&#xff0c;旨在提供更好的隐私保护和访问控制。本文将介绍IP代理的工作原理以及为什么选择高质量的代理IP。 一、IP代理的基本原理…

LeetCode LRU缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;…

CarSim车辆运动轨迹绘制

CarSim车辆运动轨迹绘制 CarSim中与车辆位置有关的信息分别为Xo和Yo 输出到Simulink中 导入到工作空间中保存&#xff0c;low_carsim_path.mat &#xff0c;绘制结果曲线&#xff0c;low_carsim_path_comp.m data csvread(low_two_path.csv,1,0); low_two_path_x data(:,1)…

电商数据驱动的决策智慧:深度解析数据采集与应用||电商API接口接入与应用

引言 在数字化时代&#xff0c;数据已成为电商企业最宝贵的资产之一。通过有效的数据采集&#xff0c;企业能够洞察市场动态、理解消费者需求、优化运营策略&#xff0c;从而在激烈的市场竞争中脱颖而出。本文将深入探讨电商数据采集的重要性、常用方法以及应用实践。 一、电商…

教程 | Navicat 17 管理连接新方法

Navicat 17 提供了比以往更多的连接数据库实例的方式。除了传统的连接字符串方式以外&#xff0c;Navicat 17 还支持 URI 连接&#xff0c;无论身在何处&#xff0c;都可以轻松地通过 URI 访问对象。另外&#xff0c;还有一个新的管理连接功能&#xff0c;即允许你通过一个以用…

在github上创建(上传、关联)自已的项目

目录 创建一个github项目并进行开发。 1.github创建空项目 2. git clone 项目 3. 将项目关联 创建一个github项目并进行开发。 1.github创建空项目 右边的New 然后按步创建就行 2. git clone 项目 复制这个连接 然后在终端&#xff1a;git clone [刚才复制的连接] 3. 将…

【代码随想录】【算法训练营】【第27天】 [39]组合总和 [40] 组合总和II [131]分割回文串

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day26&#xff0c; 休息的周末~ day 27&#xff0c;周一&#xff0c;库存没了&#xff0c;哭死~ 题目详情 [39] 组合总和 题目描述 39 组合总和 解题思路 前提&#xff1a;组合的子集问题&…

[matlab]折线图之多条折线如何绘制实心圆作为标记点

使用MarkerFaceColor是标记点填充的颜色&#xff0c;b&#xff0c;表示blue&#xff0c;蓝色 plot(x, a, d--, MarkerFaceColor, b); % 绘制仿真结果的曲线如果一张图多条曲线那么每条曲线需要单独调用一次plot&#xff0c;每个plot间用hold on 连接 plot(x, a, d--, MarkerF…

基于pytorch的车牌识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、导入数据 from torchvision.transforms import transforms from torch.utils.data import DataLoader from torchvision import datase…

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS 集成网卡驱动 Marvell AQC 网卡定制版

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 集成网卡驱动 Marvell AQC 网卡定制版 VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U2 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链…

Python Virtualenv:创建独立的 Python 开发环境

在当今软件开发的世界中&#xff0c;Python 是一种备受欢迎的编程语言&#xff0c;其简洁、易读和强大的特性吸引了无数开发者。然而&#xff0c;随着项目的增多和复杂度的提高&#xff0c;有效地管理 Python 项目所需的各种依赖项和库变得越来越重要。在这种情况下&#xff0c…

【机器学习】医疗AI的突破:深度学习在医学影像诊断中的惊人表现

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、深度学习在医学影像诊断中的突破1. 技术原理2. 实际应用3. 性能表现 三、深度学习在医学影像诊断中的惊人表现1. 提高疾病诊断准确率2. 辅助制定治疗方案 四、深度学习对医疗行业的影响和推动作用 一、引言 随着…

k8s——安全机制

一、安全机制说明 Kubernetes作为一个分布式集群的管理工具&#xff0c;保证集群的安全性是其一个重要的任务。API Server是集群内部各个组件通信的中介&#xff0c; 也是外部控制的入口。所以Kubernetes的安全机制基本就是围绕保护API Server来设计的。 比如 kubectl 如果想…

jadx-gui-1.5 反编译工具使用教程 反混淆 Java android 查看签名

JADX&#xff1a;JADX是一个强大的反编译工具&#xff0c;它支持命令行和图形界面操作。除了基本的反编译功能外&#xff0c;JADX还提供了反混淆功能&#xff0c;有助于提高反编译后代码的可读性。 在Android开发和安全分析领域&#xff0c;反编译工具扮演着至关重要的角色。这…

Python | Leetcode Python题解之第129题求根节点到叶节点数字之和

题目&#xff1a; 题解&#xff1a; class Solution:def sumNumbers(self, root: TreeNode) -> int:if not root:return 0total 0nodeQueue collections.deque([root])numQueue collections.deque([root.val])while nodeQueue:node nodeQueue.popleft()num numQueue.p…

Vue3+vite部署nginx的二级目录

修改router访问路径 const router createRouter({history: createWebHistory(/mall4pc-bbc/),routes: [XXX,] })配置package.json文件 "build:testTwo": "vite build --mode testing --base/mall4pc-bbc/", 执行打包命令 npm run build:testTwo 打包出…

搭dg mount报错ora-01103 database name XXXX in control file 处理

问题 处理方法 RMAN> shutdown Oracle instance shut down RMAN> [oracleprimary1 ~]$ cd $ORACLE_HOME/dbs [oracleprimary1 dbs]$ ls hc_racpm1.dat hc_stdg11.dat id_racpm1.dat init.ora initstd.ora orapwstdg11 spfilestdg11.ora [oracleprimary1 dbs]$ v…

压力测试-性能指标-Jmeter使用-压力测试报告

文章目录 1.压测目的2.性能指标3.Jmeter3.1Jmeter使用3.1.1 运行Jmeter3.1.2 添加线程组3.1.3设置HTTP请求3.1.4 设置监视器 3.2 查看Jmeter压测结果3.2.1 查看结果树3.2.2 查看汇总报告3.2.3 查看聚合报告3.2.4 查看汇总图 1.压测目的 内存泄漏&#xff1a;OOM&#xff0c;重…

智慧园区整体解决方案(PPT文件)

智慧园区整体建设方案旨在通过整合园区内外部资源&#xff0c;提升园区的信息化、智能化水平&#xff0c;以创新驱动经济发展方式转变&#xff0c;提高经济增长质量效益。方案主要包括以下几个方面&#xff1a; 基础设施建设&#xff1a;实现园区内网络全覆盖&#xff0c;包括宽…

解决国内无法访问huggingface.co

在国内无法访问 https://huggingface.co 时&#xff0c;可以使用国内的镜像站点&#xff1a; HF-Mirror - Huggingface 镜像站加速访问Hugging Face的门户。作为一个公益项目&#xff0c;我们致力于提供稳定、快速的镜像服务&#xff0c;帮助国内用户无障碍访问Hugging Face的…