当前位置: 首页 > article >正文

【JAVA】七、基础知识“if+switch+循环结构”详细讲解~简单易懂!

目录

7、逻辑控制

7.1 分支结构

7.1.1 if 语句

语法格式1

语法格式2

语法格式3

7.1.2 switch语句 

基本语法

执行流程

7.2 循环结构 

7.2.1 while循环

语法格式

 7.2.2 Break

 7.2.3 Continue

 7.2.4 for循环

语法格式

执行过程

 7.2.5 do while循环 

语法格式

 7.3 输入输出

7.3.1 输出到控制台

语法格式

7.3.2 从键输入(Scanner类)

1. 导入Scanner类

2. 创建Scanner对象

3. 读取不同类型的输入

7.4 文章结语


7、逻辑控制

        引入:我们每一个人每天的生活似乎都是充满规律的,我们都在一定的顺序中做着每件事,而很多人也是日复一日的努力着。而对于程序而言,其实和人生一样的,在顺序中循环,伴随着一次次选择,我们不断成长,程序不断运行。


7.1 分支结构

7.1.1 if 语句

  • 语法格式1

规则: 如果布尔表达式结果为true,执行if语句,否则不执行!

例子:

public class Main {public static void main(String[] args) {int salary = 100000000;//如果工资大于等于10000000执行输出语句if(salary >= 10000000 ){System.out.println("买大别墅!");}}
}
  • 语法格式2

规则:如果布尔表达式结果为true,则执行if中的语句,否则执行else语句。

例子:

public class Main {public static void main(String[] args) {int salary = 100000000;//如果工资大于等于10000000执行输出语句if(salary >= 10000000 ){System.out.println("买大别墅!");}else{System.out.println("好好学习,挣大钱买大别墅!");}}
}
  • 语法格式3

规则:如果表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。 

注意:

  • 注意不要在if后的布尔表达式后增加分号!如果加了分号,就不会执行if后面的语句了。
  • if/else语句中可以不加大括号,但也可以写语句(只能写一条)此时else是和最近的if匹配的。

7.1.2 switch语句 

  • 基本语法

执行流程
  1. 首先计算表达式的值。
  2. 再和case依次比较,一旦有响应的匹配就执行该case里面的语句,直到遇到break时结束
  3. 当表达式的值没有能匹配到的case时,执行default

注意:

  1.  long float double boolean都不可以作为switch的参数。
  2. case后面的常量值不可以重复。
  3. 引用类型:String 常量串,枚举类型。
  4. switch不能表达复杂的条件。

例子:

public class Main {public static void main(String[] args) {int day = 3; // 定义一个变量switch (day) {case 1: {// case 1 的代码块System.out.println("今天是星期一");break; // 跳出 switch 语句}case 2: {// case 2 的代码块System.out.println("今天是星期二");break;}case 3: {// case 3 的代码块System.out.println("今天是星期三");break;}default: {// 默认代码块System.out.println("今天不是星期一、二或三");}}}
}

结果输出的语句是"今天是星期三"。


7.2 循环结构 

7.2.1 while循环

  • 语法格式

 规则:循环条件为true,则执行循环条件语句,否则结束循环。

 例子:计算1-100数字之和

public class Main {public static void main(String[] args) {int sum = 0; // 定义一个变量 sum,用于存储累加的结果int i = 1;   // 定义一个变量 i,初始值为1,表示从1开始累加// 使用 while 循环,当 i 小于等于100时执行循环体while (i <= 100) {sum += i; // 将当前的 i 值累加到 sum 中i++;     // 将 i 的值加1,准备下一次循环}// 输出最终的结果System.out.println("1到100的和是: " + sum);}
}

 7.2.2 Break

  1. 在循环中使用 break

    • 用于提前退出循环(如 forwhiledo-while)。

    • 当满足某个条件时,可以使用 break 立即终止循环,不再执行循环中剩余的代码

  2. 在 switch 语句中使用 break

    • 用于结束 switch 语句的执行,防止“贯穿”现象。

    • 如果没有 breakswitch 语句会继续执行后续的 case 代码块。

  例子:找到100-200中第一个3的倍数

public class Main {public static void main(String[] args) {//定义一个变量num表示从100开始寻找int num = 100;//使用while循环,表示i在100到200间执行循环体while( num <= 200) {//使用if语句,判断是否为三的倍数if(num % 3 == 0) {//如果这个数是三的倍数,则输出这个数System.out.println("找到了三的倍数为"+num);//找到了这个数,使用break终止循环break;}num++;//若if后的布尔表达式结果为false,则将num的值+1进入下一次循环。}}
}

 7.2.3 Continue

  • 功能:Continue的功能是跳过这次循环,立即进入下次循环。要注意,continue后面的内容不会被执行!
  • 例子:找到100-200之间所有3的倍数

(代码中continue注释:即执行到continue语句的时候,就会立刻进入下次循环判定循环条件,从而不会执行到下方的打印语句)

public class Main {public static void main(String[] args) {//初始化一个num变量,表示从100开始寻找int num = 100;//使用while循环,当num属于100-200时执行循环体while (num <= 200){//每次循环将num的值加一,确保num的更新num++;//使用if语句判断num是否为三的倍数if(num %3 != 0){//如果num不是3的倍数,continue则跳过次循环,进入下一次循环continue;//如果num是3的倍数,输出这个数}System.out.println("找到了3的倍数"+num);}}
}

 7.2.4 for循环

  • 语法格式

  • 执行过程
  1. 计算表达式1的值。表达式1通常用于对循环变量赋初值,在循环最开始时执行,只会执行一次。
  2. 计算布尔表达式的值。布尔表达式2是循环条件,如果返回的值是true。就执行表达式4;如果返回的值是false,就结束整个for循环。 
  3. 计算表达式3的值。表达式3的主要功能是改变循环变量的值进行更新,为执行下一次循环做准备。
  4. 再次执行步骤2和步骤3,直到步骤2中的逻辑表达式返回为false,就结束整个循环。
  • 例子:输出1-100以内所有数字的和
public class Main {public static void main(String[] args) {//声名变量并赋初值int sum = 0;//使用for循环for (int i = 0; i <= 100; i++) {//这位表达式4,也是循环体,计算每次循环后的sum的值sum = sum + i;}//如果i>100时,布尔表达式返回值为false,则结束循环,输出100以内的所有数字的和System.out.println("100以内的所有的数字和是:"+ sum);}
}

 7.2.5 do while循环 

  • 语法格式

  • 规则:先执行循环语句,再判定循环条件,循环条件成立则继续执行,否则循环结束。
  • 例子:打印0-10数字
public class Main {public static void main(String[] args) {//初始化变量并赋初值int num = 0;do {//输出num的值System.out.println(num);//更新变量的值num++;}while (num <= 10);//判断变量的值}
}

 7.3 输入输出

7.3.1 输出到控制台

  • 语法格式

这三种是java中标准的的输出方式。


7.3.2 从键输入(Scanner类)

   Scanner类是Java中用于读取用户输入的一个工具类,它位于java.util包中。Scanner类可以读取从键盘、文件、字符串等多种输入源的数据。下面博主从基础开始讲解Scanner类的使用,并结合代码示例进行说明。

1. 导入Scanner

        在使用Scanner类之前,需要先导入它。

import java.util.Scanner;
2. 创建Scanner对象

        要使用Scanner类读取输入,首先需要创建一个Scanner对象。通常我们会从标准输入(键盘)读取数据:

Scanner scanner = new Scanner(System.in);

         这里的System.in表示标准输入流(通常是键盘输入)。

3. 读取不同类型的输入

   Scanner类提供了多种方法来读取不同类型的输入数据,例如:

  • next():读取下一个字符串(以空格或换行符分隔)。

  • nextInt():读取下一个整数。

  • nextDouble():读取下一个双精度浮点数。

  • nextLine():读取下一行文本(直到换行符)。

 例子:

        下面是一个简单的代码示例,展示了如何使用Scanner类读取不同类型的输入

import java.util.Scanner;public class Main {public static void main(String[] args) {//创建Scanner对象Scanner scanner = new Scanner(System.in);//提示输入用户姓名System.out.println("请输入您的姓名:");String name = scanner.next();//读取字符串System.out.println("您好!" + name + "!");//提示用户输入年龄System.out.println("请输入您的年龄:");int age = scanner.nextInt();//读取整数System.out.println("您的年龄是:" + age +"!");//提示用户输入身高System.out.println("请输入您的身高:");double height = scanner.nextDouble();//读取双精度浮点数System.out.println("您的身高是:" + height +"!");// 提示用户输入一句话System.out.print("请输入一句话: ");scanner.nextLine();  // 清除缓冲区String sentence = scanner.nextLine();  // 读取一行文本System.out.println("您输入的话是: " + sentence);// 关闭Scanner对象scanner.close();}
}

 这段代码运行结果示例:

        博主对其中一些进行再详细点的解释:

  • scanner.next():读取用户输入的字符串,直到遇到空格或换行符为止。

  • scanner.nextInt():读取用户输入的整数。

  • scanner.nextDouble():读取用户输入的双精度浮点数。

  • scanner.nextLine():读取用户输入的一行文本,直到遇到换行符为止。需要注意的是,在读取完nextInt()nextDouble()后,缓冲区中可能会留下一个换行符,因此在使用nextLine()之前,通常需要先调用一次nextLine()来清除缓冲区。


7.4 文章结语

        Java的逻辑控制是程序设计的核心骨架,分支结构循环结构共同构建了代码的动态行为:

  1. 分支结构ifswitch)通过条件判断实现逻辑分流,让程序在不同场景下精准响应。

  2. 循环结构whilefordo-while)通过重复执行代码块提升效率,然后用breakcontinue可以进一步细化流程控制。

  3. 输入输出  System.out实现信息展示,Scanner类则提供更加便捷的输入和输出。

        希望这篇博客能对友友们有帮助,也希望和大家一起学习进步!


制作不易,感谢友友们的点赞收藏关注,如有问题欢迎批评指正,祝友友们生活愉快,学习工作顺顺利利!

相关文章:

【JAVA】七、基础知识“if+switch+循环结构”详细讲解~简单易懂!

目录 7、逻辑控制 7.1 分支结构 7.1.1 if 语句 语法格式1 语法格式2 语法格式3 7.1.2 switch语句 基本语法 执行流程 7.2 循环结构 7.2.1 while循环 语法格式 7.2.2 Break 7.2.3 Continue 7.2.4 for循环 语法格式 执行过程 7.2.5 do while循环 语法格式 7.3 …...

【C++】每日一练(轮转数组)

本篇博客给大家带来的是用C语言来解答轮转数组&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;每日一练 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff1a;不服输的少年啊…...

Java 反射机制学习

Java 反射机制详解 Java 反射&#xff08;Reflection&#xff09;是 Java 语言的一种强大特性&#xff0c;允许程序在运行时动态地获取类的信息并操作类或对象的属性、方法和构造器。反射机制打破了 Java 的封装性&#xff0c;但也提供了极大的灵活性&#xff0c;常用于框架开…...

GetCurrentTime

在实际编程中难免要获取当前时间并且进行格式化&#xff0c;本文给出了多种 GetCurrentTime() 方法以供选择。 C语言下使用strftime C 语言中可以使用 <time.h> 中的函数来获取和格式化时间 #include <stdio.h> #include <time.h>char* getCurrentTime() …...

计算机的结构形式

微机的机构形式 台式个人微机 最开始的微机&#xff08;计算机&#xff09;都是台式的&#xff0c;到目前为止仍是个人微机的主要形式。台式机按照电脑机箱的放置形式&#xff0c;分为卧式和立式两种。台式机需要放在桌面上或者留有专门放置机箱位置&#xff0c;他的主机、键…...

SSL/TLS 1.2过程:Client端如何验证服务端证书?

快速回顾非对称加密和对称加密 首先快速说一下非对称加密和对称加密。非对称加密&#xff0c;就是有一个公钥和私钥(成对存在)。 公钥对一段文本A加密得到文本B&#xff0c;只有对应的私钥能对B解密得到A。 私钥对一段文本C加密得到文本D&#xff0c;只有对应的公钥能对D解密得…...

Python(学习一)

做网站有成熟的框架像FLASK、DJANGO、TORNADO&#xff0c;写爬虫有好用到哭的REQUESTS&#xff0c;还有强大到没盆友的SCRAPY 随着NUMPY、SCIPY、MATLOTLIB等众多第三方模块的开发和完善&#xff0c;不仅支持py支持各种数学运算&#xff0c;还可以绘制高质量的2D和3D图像&…...

Java中类和对象

类和对象 面向对象的认识类的定义和使用1 类的定义2 类的创建3 类的实例化 构造方法1 构造方法的概念2 构造方法的注意事项 this关键字 面向对象的认识 前言 何为面向对象何为面向过程呢&#xff1f;&#xff0c;C语言是最经典的面向过程的语言,但是C语言虽然可以解决一定的问…...

文本组件+Image组件+图集

Canvas部分知识补充 元素渲染顺序 以Hierarchy参考 下方物体在上方物体前显示 子物体在父物体前显示 下方物体永远在前显示&#xff0c;无论上方的层次结构 资源导入 绝对路径&#xff1a;C:\Windows\Fonts下的许多字体可以用做UIText的字体资源 图片导入&#xff1a; 1.图…...

Audacity 技术浅析(一)

Audacity 是一个开源的音频编辑工具&#xff0c;虽然它主要用于音频编辑和处理&#xff0c;但也可以通过一些插件和功能实现基本的音频生成功能。 1. Audacity 的音频生成基础 Audacity 的音频生成主要依赖于其内置的生成器、效果器以及 Nyquist 编程语言。这些工具允许用户创…...

PyCharm 2019.1.3使用python3.9创建虚拟环境setuptools-40.8.0报错处理

目录 前置&#xff1a; 一劳永逸方法&#xff08;缺最后一步&#xff0c;没有成行&#xff09; step one: 下载高版本的pip、setuptools、virtualenv的tar.gz包 step two: 进入PyCharm安装目录的 helpers 目录下 step three: 下载并安装grep和sed命令&#xff0c;然后执行 …...

敏捷开发在中小团队中的应用与挑战:实战指南与避坑手册

文章目录 敏捷开发在中小团队中的应用与挑战&#xff1a;实战指南与避坑手册引言&#xff1a;为什么中小团队更需要敏捷&#xff1f;一、敏捷开发适配中小团队的底层逻辑1.1 中小团队的典型特征1.2 敏捷开发的价值放大器效应 二、敏捷实施的五大实战步骤2.1 团队定制化改造&…...

服务器部署RocketMQ----Docker方式

拉取镜像并创建docker network 按照官方文档提供的方式拉取镜像&#xff1a;docker pull apache/rocketmq:4.9.6 创建一个docker网络&#xff1a;docker network create rocketmq 启动NameServer以及Broker 启动NameServer # 启动NameServer docker run -d --name rmqnames…...

【推荐项目】052-用水监控管理系统

052-用水监控管理系统 介绍 用水监控管理系统 springboot java vuejs jdk1.8 当然&#xff0c;以下是一个简洁的用水监控管理系统的功能模块划分&#xff0c;基于Spring Boot&#xff08;JDK 1.8&#xff09;后端和Vue.js前端&#xff1a; 用水监控管理系统功能模块 后端&…...

零基础上手Python数据分析 (2):Python核心语法快速入门

写在前面 场景:每周销售数据报表整理 任务描述: 你需要每周从多个Excel文件中汇总销售数据,计算各项指标(销售额、订单量、客单价等),并生成周报。Excel操作痛点: 文件太多,手动打开复制粘贴,效率低下,容易出错。 多个Excel文件,每个都要打开、筛选、复制数据,重复…...

大模型MCP协议与Function Calling:构建更智能的AI生态系统

随着大型语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;如何高效地将这些模型与外部数据源、工具和服务进行集成&#xff0c;成为了一个亟待解决的问题。Anthropic推出的Model Context Protocol&#xff08;MCP协议&#xff09;和Function Calling技术为此提供了有…...

【C++】RAII机制

什么是RAII机制&#xff1f; RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是 C 中的一种重要编程范式&#xff0c;用于管理资源&#xff08;如内存、文件句柄、网络连接等&#xff09;的生命周期。 RAII 的核心思想是&#xff1a;资源的获取与初始化绑…...

游戏引擎学习第160天

回顾和今天的计划 我们没有使用任何游戏引擎和库&#xff0c;完全靠我们自己&#xff0c;使用的是老式的编程方式。 我们已经构建了很多内容&#xff0c;游戏引擎开发也慢慢接近尾声。现在我们已经接近完成了所有为支持游戏开发所需要的工作&#xff0c;接下来将逐步过渡到游戏…...

Webpack 知识点整理

​ 1. 对 webpack 的理解&#xff1f;解决了什么问题&#xff1f; Webpack 是前端工程化领域的核心工具&#xff0c;其核心定位是模块打包器&#xff08;Module Bundler&#xff09;&#xff0c;通过将各类资源&#xff08;JS、CSS、图片等&#xff09;视为模块并进行智能整合…...

从零搭建微服务项目Pro(第2-2章——JSR303自定义文件校验+整合至微服务公共模块)

前言&#xff1a; JSR 303&#xff0c;即 Bean Validation&#xff0c;是 Java EE 6 中的一项子规范&#xff0c;旨在为 Java Bean 提供一种标准化的数据验证机制。它通过注解的方式&#xff0c;允许开发者在 Java 类的字段或方法上直接定义验证规则&#xff0c;从而将验证逻辑…...

如何用URDF文件构建机械手模型并与MoveIt集成

机械手URDF文件的编写 我们用urdf文件来描述我们的机械手的外观以及物理性能。这里为了简便&#xff0c;就只用了基本的圆柱、立方体了。追求美观的朋友&#xff0c;还可以用dae文件来描述机械手的外形。 import re def remove_comments(text):pattern r<!--(.*?)-->…...

uv pip install -r requirements.txt-报错,python版本过低

升级Python版本&#xff08;推荐&#xff09; browser-use0.1.40 需要 Python ≥3.11&#xff0c;但你的环境是 Python 3.10.12。升级Python版本是最直接的解决方案&#xff1a; 安装Python 3.11&#xff1a; 使用 pyenv&#xff08;Linux/macOS&#xff09;&#xff1a;pyenv…...

【训练细节解读】文本智能混合分块(Mixtures of Text Chunking,MoC)引领RAG进入多粒度感知智能分块阶段

喜欢本文可以在主页订阅专栏哟 核心创新&#xff1a;双重评估指标与混合分块架构&#xff1a; 第一章&#xff1a;检索增强生成&#xff08;RAG&#xff09;技术演进与分块挑战 1.1 RAG架构的核心演变 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09…...

招聘信息|基于SprinBoot+vue的招聘信息管理系统(源码+数据库+文档)

招聘信息管理系统 目录 基于SprinBootvue的招聘信息管理系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 5.3企业后台管理模块 5.4用户后台管理模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、…...

HCIA-AI人工智能笔记1:大模型技术演进与发展历程

一、大模型发展的技术演进图谱 timelinetitle 大模型发展关键里程碑1958 : 感知机模型诞生&#xff08;Frank Rosenblatt&#xff09;1986 : BP反向传播算法&#xff08;Rumelhart&#xff09;2012 : AlexNet开启深度学习时代2017 : Transformer架构提出&#xff08;《Attenti…...

躲藏博弈中的策略优化:整合历史数据、概率论与博弈论

躲藏博弈中的策略优化&#xff1a;整合历史数据、概率论与博弈论 一、引言 躲藏博弈(Hiding Games)作为一类特殊的博弈模型&#xff0c;广泛存在于军事对抗、网络安全、商业竞争甚至日常生活中。其核心在于一方(躲藏者)试图避免被另一方(寻找者)发现&#xff0c;双方各自选择…...

C语言,记录一次局部变量被意外修改的问题

背景:单片机开发过程中,我在函数体内(begin_face_record)定义了一个局部变量data_length,在使用的时候,该局部变量一直别改变,每次调用其他函数,例如c库里面的函数memcpy,不知什么情况data_length值就会被改变。 1、源码分析 void main(void) { init_gpio();init_fa…...

机器学习——正则化、欠拟合、过拟合、学习曲线

过拟合&#xff08;overfitting&#xff09;:模型只能拟合训练数据的状态。即过度训练。 避免过拟合的几种方法&#xff1a; ①增加全部训练数据的数量&#xff08;最为有效的方式&#xff09; ②使用简单的模型&#xff08;简单的模型学不够&#xff0c;复杂的模型学的太多&am…...

在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别

在微信小程序或前端开发中&#xff0c;picker 和 select 都是用户交互中用于选择的组件&#xff0c;但它们在功能、设计和使用场景上有一定的区别。 1. picker 的特点 描述&#xff1a; picker 是微信小程序中的原生组件&#xff0c;通常用于选择单项或多项值&#xff0c;如时…...

向量数据库对比以及Chroma操作

一、向量数据库与传统类型数据库 向量数据库&#xff08;Vector Storage Engine&#xff09;与传统类型的数据库如关系型数据库&#xff08;MySQL&#xff09;、文档型数据库&#xff08;MongoDB&#xff09;、键值存储&#xff08;Redis&#xff09;、全文搜索引擎&#xff0…...