Java流程控制(一)

news2024/9/22 1:09:36

    • ⭐ 控制语句
    • ⭐ 条件判断结构(选择结构)
    • ⭐ switch 语句

  做任何事情事情都要遵循一定的原则,毕竟不以规矩,不成方圆,例如,到图书馆去借书,就必须要有借书证,并且借书证不能过期,这两个条件缺一不可。程序设计也是如此,需亚流程控制语句实现与用户的交流,并根据用户的输入决定程序要"做什么""怎么做"等。
  流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序步骤的基本手段,如果没有流程控制语句,整个程序将按照线性的顺序来执行,不能根据用户的输入流决定执行的序列。下面我带大家一起了解Java语言中的流程控制语句。

⭐ 控制语句

在这里插入图片描述

控制语句:

把语句组合成能完成一定功能的小逻辑模块。
它分为三类:顺序、选择和循环。

学会控制语句,是真正跨入编程界的"门槛",是成为"程序猿"的"门票"。

⭐	 “顺序结构”代表“先执行 a,再执行 b”的逻辑。比如,先找个女朋友,再给女朋友打电话。
⭐	 “条件判断结构”代表“如果…,则…”的逻辑。比如,如果女朋友来电,则迅速接电话;
⭐	 “循环结构”代表“如果…,则重复执行…”的逻辑。比如,如果没打通女朋友电话,则再继续打一次;(做个舔狗!!!)

    很神奇的是,三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。实际上,任何软件和程序,小到一个练习,大到一个操作系统,本质上都是由“变量、选择语句、循环语句”组成。

在这里插入图片描述

⭐ 条件判断结构(选择结构)

在这里插入图片描述
条件判断结构有:

if 结构和 switch 结构。而 if 结构又可以分为 if 单分支结构、if-else 双分支结构、if-else if-else 多分支结构。

在这里插入图片描述
if 单分支结构
在这里插入图片描述
语法结构:

		if(布尔表达式){
			语句块
	}

注意:

	⭐	如果if语句不写{},则只能作用于后面的第一条语句。
	⭐	强烈建议,任何时候都写上{},即使里面只有一句话!

【eg】if 单分支结构(掷骰子游戏)
在这里插入图片描述
Math 类的使用

⭐	Math.random()该方法用于产生 0 到 1 区间的 double 类型的随机数,但是不包括 1。
⭐	int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数
	public class Test {
		public static void main(String[ ] args) {
			//通过掷三个骰子看看今天的手气如何?
	int a = (int)(6 * Math.random()) + 1;//通过 Math.random()产生随机数
	int b = (int)(6 * Math.random()) + 1;
	int c = (int)(6 * Math.random()) + 1;
	int count = a + b + c;
		//如果三个骰子之和大于 15,则手气不错
		if(count > 15) {
		System.out.println("今天手气不错");
			}
		//如果三个骰子之和在 10 到 15 之间,则手气一般
		if(count >= 10 && count <= 15) { //错误写法:10<=count<=15
		System.out.println("今天手气很一般");
			}
		//如果三个骰子之和小于 10,则手气不怎么样
		if(count < 10) {
		System.out.println("今天手气不怎么样");
			}
		System.out.println("共计" + count + "分");
	}
}

if-else 双分支结构
在这里插入图片描述

语法结构:

	if(布尔表达式){
		语句块 1
	}else{
		语句块 2
}

当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是 else 部分。

【eg】if-else 双分支结构

	public class Test {
		public static void main(String[ ] args) {
		//随机产生一个[0.0, 4.0)区间的半径,并根据半径求圆的面积和周长
		double r = 4 * Math.random();
 		//Math.pow(r, 2)求半径 r 的平方
		double area = 3.14* r*r;
		double circle = 2 * Math.PI * r;
	System.out.println("半径为: " + r);
	System.out.println("面积为: " + area);
	System.out.println("周长为: " + circle);
		//如果面积>=周长,则输出"面积大于等于周长",否则,输出周长大于面积
			if(area >= circle) {
				System.out.println("面积大于等于周长");
			} else {
				System.out.println("周长大于面积");
		}
	}
}

条件运算符有时候可用于代替 if-else。

【eg】if-else 与条件运算符的比较:使用 if-else

	int a = 3;
	int b = 4;
	int c2 = 0;
		if(a<b){
 			c2 = b;
		}else{
 			c2 = a;
	}
	System.out.println(c2);

【eg】if-else 与条件运算符的比较:使用条件运算符

		// 三元运算
		int a = 3;
		int b = 4;
		int c = a<b?b:a; //返回 a 和 b 的最大值
		System.out.println(c);

if-else if-else 多分支结构

在这里插入图片描述

语法结构:

		if(布尔表达式 1) {
			语句块 1;
		} else if(布尔表达式 2) {
			语句块 2;
		}……
		else if(布尔表达式 n){
			语句块 n;
		} else {
			语句块 n+1;
}

当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式 2 为真时,执行语句块 2;否则,继续判断布尔表达式 3······;如果 1~n 个布尔表达式均判定为假时,则执行语句块 n+1,也就是 else 部分。

【eg】if-else if-else 多分支结构

	public class Test {
		public static void main(String[ ] args) {
			int age = (int) (100 * Math.random());
		System.out.print("年龄是" + age + ", 属于");
//15 岁以下儿童;15-24 青年;25-44 中年;45-64 中老年;65-84 老年;85 以上老寿星
			if (age < 15) {
		System.out.println("儿童, 喜欢玩!");
			} else if (age < 25) {
		System.out.println("青年, 要学习!");
			} else if (age < 45) {
		System.out.println("中年, 要工作!");
			} else if (age < 65) {
		System.out.println("中老年, 要补钙!");
			} else if (age < 85) {
		System.out.println("老年, 多运动!");
			} else {
		System.out.println("老寿星, 古来稀!");
		}
	}
}

⭐ switch 语句

switch 多分支结构(多值情况)
在这里插入图片描述

语法结构:

		switch (表达式) {
			case1: 
			语句块 1;
			break;
			case2:
			语句块 2;
			break;
 			… … … … …
			default:默认语句块;
}

⭐ switch 会根据表达式的值从相匹配的 case 标签处开始执行,一直执行到 break 处或者是 switch 的末尾。如果表达式的值与任一 case 值不匹配,则进入 default 语句。
⭐ switch 中表达式的值,是 int(byte、short、char、long 不行)、枚举,字符串。

【eg】switch 结构

		public class TestSwitch {
			 public static void main(String[] args){
			 int month = 2; //1 表示 1 月,2 表示 2 月,....
 			 if(month==1||month==2||month==3){
			 System.out.println("春季");
 			 }else if(month==4||month==5||month==6){
 			System.out.println("夏季");
 			 }else if(month==7||month==8||month==9){
 			System.out.println("秋季");
 			 }else{
 			System.out.println("冬季");
	 }
 System.out.println("========使用 switch 改造上面的代码,switch 特别适合多值判断=============");
		 switch (month){
		 case 1:
		 case 2:
		 case 3:
	 System.out.println("春季");
		 break;
 		 case 4:
 		 case 5:
 		 case 6:
	 System.out.println("夏季");
		 break;
		 case 7:
		 case 8:
		 case 9:
	 System.out.println("秋季");
		 break;
		 default:
	 System.out.println("冬季");
 		}
	 }
}

switch 接收字符串

【eg】JDK7.0 之后可以直接使用字符串。

		 String str = "audi";
 		 switch (str){
 		 case "audi":
		 System.out.println("我买了个奥迪车");
		 break;
		 case "benz":
		 System.out.println("我买了个奔驰车");
		 break;
		 default:
		 System.out.println("比亚迪,挺好!");
	 }

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

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

相关文章

【新星计划回顾】第二篇学习计划-通过定义变量简单批量模拟数据

&#x1f3c6;&#x1f3c6;又到周末&#xff0c;最近这段时间非常忙&#xff0c;虽然导师首次参与新星计划活动已经在4月16日圆满结束&#xff0c;早想腾出时间来好好整理活动期间分享的知识点。 &#x1f3c6;&#x1f3c6;非常感谢大家的支持和活动期间的文章输出&#xff0…

软件测试基础(V模型W模型)

软件测试基础 1. 软件测试的生命周期 需求分析&#xff1a;站在用户的角度查看需求逻辑是否正确&#xff0c;是否符合用户的需求和行为习惯。站在开发的角度思考需求是否可以实现&#xff0c;或者说实现起来难度高不高测试计划&#xff1a;指定测试计划&#xff08;包括不限于…

Linux用户和组管理

1、用户和组简介 Linux 是多用户多任务操作系统。换句话说&#xff0c;Linux 系统支持多个用户在同一时间内登陆&#xff0c;不同用户可以执行不同的任务&#xff0c;并且互不影响。不同用户具有不问的权限&#xff0c;毎个用户在权限允许的范围内完成不同的任务。 用户组是具…

进攻即是最好的防御!19个练习黑客技术的在线网站

前言 进攻即是最好的防御&#xff0c;这句话同样适用于信息安全的世界。这里罗列了19个合法的来练习黑客技术的网站&#xff0c;不管你是一名开发人员、安全工程师、代码审计师、渗透测试人员&#xff0c;通过不断的练习才能让你成为一个优秀安全研究人员。以下网站希望能给各…

智能排班系统 【技术选型与工具版本】

技术架构图 前端工具及环境 名称版本介绍NodeJS16.13.2开源、跨平台的 JavaScript 运行时环境Npm8.1.2npm包管理工具可以快速引入别人开发好的工具包进行使用Webpack4.0.0打包工具Vue2.6.14Vue 的核心库只关注视图层&#xff0c;易于上手&#xff0c;便于与第三方库或既有项目…

每日学术速递5.17

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.HACK: Learning a Parametric Head and Neck Model for High-fidelity Animation 标题&#xff1a;HACK&#xff1a;学习用于高保真动画的参数化头颈模型 作者&#xff1a;Longwe…

FEC功能在40G和100G光模块中的应用和注意事项

FEC&#xff08;Forward Error Correction&#xff0c;前向纠错&#xff09;功能是一种在数字通信中用于纠正传输过程中产生的误码的技术。在100G和40G光模块中&#xff0c;FEC功能被广泛应用于光纤传输过程中&#xff0c;以提高传输的可靠性和抗干扰能力。 本期文章我们主要介…

Twitter架构决策

技术决策需要在不同限制条件下做出权衡&#xff0c;本文介绍了Twitter早期应对用户大规模增长所做出的技术架构决策。原文&#xff1a;Twitter’s Tough Architectural Decision[1] Jeremy BezangerUnsplash 研究大规模互联网应用可以学到很多东西&#xff0c;像Netflix这样的公…

强大而可靠的DiskQ:持久化队列的解决方案

强大而可靠的DiskQ&#xff1a;持久化队列的解决方案 简介: 在软件开发中&#xff0c;处理大量数据和任务调度是常见的挑战。为了有效地处理这些问题&#xff0c;开发人员需要一种可靠的队列解决方案&#xff0c;以确保数据和任务在处理过程中不会丢失。DiskQ作为一种持久化队…

浏览器如果免费安装ChatGPT插件?

一、什么是ChatGPT&#xff1f; ​ ChatGPT是一种基于自然语言处理的机器学习算法&#xff0c;通过大规模的训练数据和优化算法来生成自然语言响应。目前&#xff0c;它在聊天机器人&#xff0c;自动回答问题&#xff0c;自动文本生成等方面有广泛的应用。ChatGPT是由OpenAI公…

[组合数学] 排列组合

文章目录 加法法则 --每一类都能够独立的完成任务乘法法则 --集合论 任务分步骤1000和9999之间有多个具有不同数位的奇数n 7 3 1 1 2 1 3 4 ^311^213^4 3112134 求除尽n的整数个数0到10000之间有多少个整数恰好是有一位数字是5两位数字可以组成多少两位互异且非零的两位数 减…

suricata中command的实现分析和自定义命令方法

suricata提供了suricatasc这个工具用来与其进行通信&#xff0c;比如修改规则文件后&#xff0c;通知suricata重新加载规则&#xff0c;就可以通过suricatasc下发重新加载规则命令&#xff0c;suricatasc和suricata通过unix socket进行通信&#xff0c;unix socke好处就是不占用…

libevent高并发网络编程 - 06_基于libevent的C++线程池实现

文章目录 1 功能简介线程池的初始化线程池执行流程 2 线程池类的设计线程类XThreadXThread.hXThread.cpp 线程池类XThreadPoolXThreadPool.hXThreadPool.cpp 任务基类taskXTask.h 3 自定义任务的例子自定义任务类ServerCMDServerCMD.hServerCMD.cpp 测试程序运行效果 1 功能简介…

华为机试(JAVA)真题Od【A卷+B卷】2023

目录 华为OD机试是什么&#xff1f;华为OD面试流程&#xff1f;华为OD机试通过率高吗&#xff1f;华为OD薪资待遇&#xff1f;华为OD晋升空间&#xff1f; 大家好&#xff0c;我是哪吒。 本专栏包含了最新最全的华为OD机试真题&#xff0c;有详细的分析和Java代码解答。已帮助…

【信息安全案例】——信息内容安全(学习笔记)

&#x1f4d6; 前言&#xff1a;在数字化时代&#xff0c;信息内容安全问题越来越引起人们的关注。信息内容安全主要包括对数据的机密性、完整性和可用性的保护&#xff0c;以及对用户隐私的保护等方面。针对信息内容安全的威胁&#xff0c;采取科学有效的安全措施和技术手段至…

每日学术速递5.20

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Improved baselines for vision-language pre-training 标题&#xff1a;改进视觉语言预训练的基线 作者&#xff1a;Enrico Fini, Pietro Astolfi, Adriana Romero-Soriano, Jak…

10-《简单算法》

10-《简单算法》 一、时间复杂度二、空间复杂度三、排序算法1.比较排序1.1冒泡排序&#xff1a;1.2选择排序&#xff1a;1.3插入排序&#xff1a;1.4归并排序(非常重要)1.5快速排序&#xff08;非常重要&#xff09;1.6堆排序1.7排序算法稳定性 2.线性排序2.1桶排序2.2计数排序…

数据结构初阶(3)(链表:链表的基本概念、链表的类型、单向不带头非循环链表的实现、链表的优缺点 )

接上次博客&#xff1a;和数组处理有关的一些OJ题&#xff1b;ArrayList 实现简单的洗牌算法&#xff08;JAVA)(ArrayList&#xff09;_di-Dora的博客-CSDN博客 目录 链表的基本概念 链表的类型 单向、不带头、非循环链表的实现 遍历链表并打印节点值&#xff1a; 在链…

uni-app小程序uni.navigateBack返回上一个页面并传递参数.返回上个页面并刷新

返回上一个打开的页面并传递一个参数。有种办法就是使用 假如从B页面返回A页面&#xff1a; var pages getCurrentPages(); var prevPage pages[pages.length - 2]; //上一个页面 prevPage.setData({ mdata:1 })经过测试&#xff0c;在uni.app中使用B页面使用setData设置A页…

【Spring篇】AOP案例

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 一、案例&#xff1a;业务层接口执行效率 1.需求分析 这个需求也比较简单&#xff0c;前面我们在介绍 AOP 的时候已经演示过 : 需求 : 任意业务层接口执行均可显示其执行效率&#xff08;执行时长&…