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

news2025/3/16 9:20:57

目录

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类则提供更加便捷的输入和输出。

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


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

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

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

相关文章

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

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

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.图…

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;然后执行 …

服务器部署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文件,每个都要打开、筛选、复制数据,重复…

游戏引擎学习第160天

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

从零搭建微服务项目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<!--(.*?)-->…

【训练细节解读】文本智能混合分块(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…

在微信小程序或前端开发中,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…

Python Matplotlib面试题精选及参考答案

绘制函数 y2x5 在区间 [1,10] 的折线图&#xff0c;设置标题和坐标轴标签 要绘制函数 y 2x 5 在区间 [1, 10] 的折线图&#xff0c;并设置标题和坐标轴标签&#xff0c;可借助 Python 的 matplotlib 库来实现。以下是详细的实现步骤与代码示例。 首先&#xff0c;要导入 mat…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …

OTP单片机调试工具之—单线数据编码

OTP单片机调试工具在实现过程中离不开单线数据的传输&#xff0c;那么使用哪一种方式的数据编码会比较好呢&#xff1f; 我所了解的主要有以下三种&#xff1a; 1.UART&#xff08;串口&#xff09;&#xff0c;这种方式在单片机和pc之间进行传输都非常常见&#xff0c;效率比较…

Java 基础到进阶企业技巧(二)

在 Java 学习的旅程中&#xff0c;我们逐步探索了其丰富的知识体系&#xff0c;从基础的数据类型、字符串操作&#xff0c;到流程控制、运算符的运用&#xff0c;每一步都为我们构建强大的编程能力奠定基石。同时&#xff0c;了解这些知识在 Java 全栈开发中的应用场景&#xf…