【Java笔记】第4章:深入学习循环结构

news2024/11/16 15:54:20

  • 前言
  • 1. 循环的理解
  • 2. while循环
  • 3. do...while循环
  • 4. for循环
  • 5. 循环的控制语句
  • 6. 循环的嵌套
  • 结语


在这里插入图片描述


上期回顾: 【Java笔记】第3章:深入学习分支结构
个人主页:C_GUIQU
归属专栏:【Java学习】

在这里插入图片描述

前言

各位小伙伴大家好!上期小编给大家讲解了Java中的分支结构,接下来讲讲循环!
在这里插入图片描述

1. 循环的理解

【理解】依据条件,重复且有规律。
【组成】循环变量的初始化、循环条件、循环变量的改变、循环体。
【分类】while循环、do…while循环、for循环。

2. while循环

【语法】

// 循环变量的初始化
while(循环条件){
   // 循环体(重复执行的功能代码)
   // 循环变量的改变
}

【示例】计算从 1 加到 10 的和

public class WhileExample {
    public static void main(String[] args) {
        int sum = 0; // 定义一个变量用于存储和
        int i = 1; // 定义一个循环变量

        while (i <= 10) { // 当 i 小于等于 10 时执行循环体内的语句
            sum += i; // 将 i 的值加到 sum 上
            i++; // 将 i 的值增加 1
        }

        // 循环结束后打印结果
        System.out.println("1 到 10 的和为: " + sum);
    }
}

3. do…while循环

【语法】

// 循环变量的初始化
do{
   // 循环体
   // 循环变量的改变
}while(循环条件); // 分号不能省略

【特点】先执行,再判断。
【示例】计算从 1 加到 10 的和

public class DoWhileExample {
    public static void main(String[] args) {
        int sum = 0; // 定义一个变量用于存储和
        int i = 1; // 定义一个循环变量

        do {
            sum += i; // 将 i 的值加到 sum 上
            i++; // 将 i 的值增加 1
        } while (i <= 10); // 当 i 小于等于 10 时继续执行循环体内的语句

        // 循环结束后打印结果
        System.out.println("1 到 10 的和为: " + sum);
    }
}

4. for循环

【语法】

for(循环变量的初始化;循环条件;循环变量的改变){
   // 循环体
}

【执行原理】

在这里插入图片描述
【示例1】打印从 1 到 10 的数字

public class ForLoopExample {
    public static void main(String[] args) {
        // 使用 for 循环打印从 1 到 10 的数字
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
    }
}

【示例2】遍历数组

public class ForLoopArrayExample {
    public static void main(String[] args) {
        // 定义一个整型数组
        int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        // 使用 for 循环遍历数组并打印每个元素
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
    }
}

【循环的总结】
while循环和for循环特点:先判断,再执行。
do…while循环特点:先执行,再判断。
当循环次数不确定时,建议使用while循环。
当循环的次数明确时,建议使用for循环。

5. 循环的控制语句

在 Java 中,循环的控制语句允许你改变循环的正常流程。主要有三种控制语句:breakcontinuereturn

  1. break 语句:用于立即退出最内层的循环,无论循环条件是否为真。break 语句也可以用于 switch 语句,用于退出 switch 语句。
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break; // 当 i 等于 5 时,退出循环
    }
    System.out.println(i); // 只打印 1 到 4
}
  1. continue 语句:用于跳过当前循环的剩余部分,并开始下一次循环迭代。
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        continue; // 当 i 等于 5 时,跳过这次迭代
    }
    System.out.println(i); // 打印 1 到 10,但不包括 5
}
  1. return 语句:用于从方法中返回一个值(如果方法有返回类型的话),并立即退出该方法。如果在循环内使用 return,它将导致整个方法立即结束,从而退出循环。
public static void printNumbers(int max) {
    for (int i = 1; i <= max; i++) {
        if (i == 5) {
            return; // 当 i 等于 5 时,退出方法
        }
        System.out.println(i); // 只打印 1 到 4
    }
}

在编写循环时,这些控制语句可以用来根据特定的条件来控制循环的执行流程。需要注意的是,过度使用这些控制语句可能会导致代码难以理解和维护,因此应该谨慎使用。

6. 循环的嵌套

循环的嵌套是指在一个循环内部再嵌套另一个循环。在 Java 中,你可以嵌套 forwhiledo...while 循环。
在实际开发中,for循环用的最多,接下来举三个for循环嵌套的例子。

【打印一个乘法表】

public class NestedLoopsExample {
    public static void main(String[] args) {
        int rows = 10;
        int columns = 10;
        // 外层循环控制行
        for (int i = 1; i <= rows; i++) {
            // 内层循环控制列
            for (int j = 1; j <= columns; j++) {
                // 打印乘法表的一个元素
                System.out.print(i * j + "\t");
            }
            // 每打印完一行后换行
            System.out.println();
        }
    }
}

在这个例子中,外层 for 循环用于控制行数,内层 for 循环用于控制每行中的列数。内层循环会在外层循环的每次迭代中完整执行。这样,内层循环的每次迭代都会打印出当前行和列的乘积。

【打印星号图案】
这个例子使用嵌套的 for 循环来打印一个金字塔形状的星号图案。

public class StarPatternExample {
    public static void main(String[] args) {
        int rows = 5;
        // 外层循环控制行数
        for (int i = 1; i <= rows; i++) {
            // 打印空格,形成左对齐的金字塔
            for (int j = 1; j <= rows - i; j++) {
                System.out.print(" ");
            }
            // 内层循环控制每行星号的个数
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            // 每打印完一行后换行
            System.out.println();
        }
    }
}

运行这个程序会输出以下图案:

    *
   **
  ***
 ****
*****

【遍历二维数组】
这个例子使用嵌套的 for 循环来遍历一个二维数组并打印其元素。

public class TwoDimensionalArrayExample {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        // 外层循环遍历行
        for (int i = 0; i < matrix.length; i++) {
            // 内层循环遍历列
            for (int j = 0; j < matrix[i].length; j++) {
                // 打印数组元素
                System.out.print(matrix[i][j] + " ");
            }
            // 每打印完一行后换行
            System.out.println();
        }
    }
}

运行这个程序会输出二维数组的所有元素,按照它们在数组中的排列:

1 2 3
4 5 6
7 8 9

在这两个例子中,嵌套循环用于处理更复杂的逻辑,比如在第一个例子中创建一个基于行和列的图形,在第二个例子中遍历一个二维数据结构。嵌套循环是处理这类问题的有力工具。

嵌套循环可以用于多种场景,比如处理二维数组、图形和图像的渲染、复杂的数据结构遍历等。在设计嵌套循环时,重要的是要确保内外层循环的逻辑是正确的,并且要考虑到循环的终止条件,以避免无限循环。

结语

以上就是小编对Java中循环的讲解。
如果觉得小编讲的还可以,还请一键三连。互三必回!
持续更新中~!
在这里插入图片描述

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

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

相关文章

C语言读取数据检索存档《C语言程序设计》·第6章·用数组处理批量数据

C数组使用 添加链接描述 C语言读取数据检索存档 1 添加链接描述 2 添加链接描述 3 添加链接描述 4 添加链接描述 5 添加链接描述 6 添加链接描述 7 matlab转C 添加链接描述

19.表单输入绑定

表单输入绑定 在前端处理表单时&#xff0c;我们常常需要将表单输入框的内容同步给 JavaScript 中相应的变量。手动连接值绑定和更改事件监听器可能会很麻烦,v-model 指令帮我们简化了这一步骤 <template><input type"text" v-model"message">…

Sylar C++高性能服务器学习记录02 【日志管理-代码分析篇】

早在19年5月就在某站上看到sylar的视频了&#xff0c;一直认为这是一个非常不错的视频&#xff0c;还有幸加了sylar本人的wx&#xff0c;由于本人一直是自学编程&#xff0c;基础不扎实&#xff0c;也没有任何人的督促&#xff0c;没能坚持下去&#xff0c;每每想起倍感惋惜。恰…

部署轻量级Gitea替代GitLab进行版本控制(一)

Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。 Gitea Official Website gitea: Gitea的首要目标是创建一个极易安装&#xff0c;运行非常快速&#xff0c;安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言&#xff0c;这使我们只要生成一个可执行程序即…

【EtherCAT】FMMU和SM简介

目录 一、简介 1、 FMMU 2、SM (1) 缓冲模式 (2)邮箱模式 3、FMMU将物理存储器映射到逻辑过程数据映射的配置原理 二、FMMU和SM在EtherCAT从站控制器的存储空间分配 三、FMMU和SM部分寄存器描述(LAN9253) 1、FMMU 2、SM 四、FMMU和SM的数据结构&#xff08;soem主站&…

修复vite中使用react提示Fast refresh only works when a file only exports components.

前言 我通过 vite 构建了一个 react 应用并使用 react.lazy 来懒加载组件&#xff0c;但是在使用过程中 一直提示 Fast refresh only works when a file only exports components. Move your component(s) to a separate file.eslint(react-refresh/only-export-components)。…

x-cmd ai | x openai - 用于发送 openai API 请求,以及与 ChatGPT 对话

介绍 Openai 模块是 Openai 大模型 Chatgpt 3 和 ChatGPT 4 命令行实现。x-cmd 提供了多个不同平台间多种 AI 大模型的调用能力。无论是本地模型还是 Web 服务上的模型&#xff0c;用户都可以在不同的 AI 大模型间直接无缝切换&#xff0c;并能把之前的聊天记录发送给新的大模…

第64天:服务攻防-框架安全CVE复现Apache ShiroApache Solr

目录 思维导图 案例一&#xff1a;Apache Shiro-组件框架安全 shiro反序列化 cve_2016_4437 CVE-2020-17523 CVE-2020-1957 案例二&#xff1a;Apache Solr-组件框架安全 远程命令执行 RCE&#xff08;CVE-2017-12629&#xff09; 任意文件读取 AND 命令执行&#xff08…

C++ 速成

C 概述 c 融合了3中不同的编程方式&#xff1a; C语言代表的过程性语言C 在C语言基础上添加的类代表的面向对象语言C 模板支持的泛型编程 C 标准 一种描述C 的一些语法规则的代码准则 C11 C 应用 游戏 C 效率是一个很重要的原因&#xff0c;绝大部分游戏殷勤都是C写的 网…

【刷题】 二分查找进阶

送给大家一句话&#xff1a; 你向神求助是因为相信神&#xff0c;神没有回应你是因为神相信你 ε≡٩(๑>₃<)۶ &#xfeff;ε≡٩(๑>₃<)۶ &#xfeff;ε≡٩(๑>₃<)۶ 一心向学 二分查找进阶 1 前言Leetcode 852. 山脉数组的峰顶索引题目描述算法思…

Unity类银河恶魔城学习记录13-5,6 p146 Delete save file,p147 Encryption of saved data源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…

Git TortoiseGit 安装使用详细教程

前言 Git 是一个免费的开源分布式版本控制系统&#xff0c;是用来保存工程源代码历史状态的命令行工具&#xff0c;旨在处理从小型到非常大型的项目&#xff0c;速度快、效率高。《请查阅Git详细说明》。TortoiseGit 是 Git 的 Windows Shell 界面工具&#xff0c;基于 Tortoi…

pg内核之日志管理器(五)WAL日志

概念 WAL日志 数据库运行过程中&#xff0c;数据一般是会保存在内存和磁盘中&#xff0c;为保证数据的安全性&#xff0c;防止数据库崩溃时数据不丢失&#xff0c;一般都是要保证数据实时落盘的&#xff0c;但是又由于磁盘随机IO读写速率与内存相比慢很多&#xff0c;如果每个…

Python爬虫爬取中药材价格数据

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;喜欢的话麻烦您点个&#x1f44d;和⭐&#xff01; &#x1f388;…

【Ubuntu20.04+Noetic】UR5e+Gazebo+Moveit

环境准备 创建工作空间 mkdir -p ur5e_ws/src cd ur5e_ws/srcUR机械臂软件包 UR官方没更新最新的noetic的分支,因此安装melodic,并需要改动相关文件。 安装UR的模型配置包,包里面有UR模型文件,moveit配置等: cd ~/ur5e_ws/src git clone -b melodic-devel https://git…

llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理

文章目录 文章列表&#xff1a;背景简介llama-factory vllm API 部署融合 lora 模型权重 vllm API 部署HuggingFace API 部署推理API 部署总结 vllm 不使用 API 部署&#xff0c;直接推理数据集 tenplatevllm 代码部署 文章列表&#xff1a; llama-factory SFT系列教程 (一)&a…

【Django】调用django的pbkdf2_sha256加密算法测试

基于django搭建的系统中&#xff0c;用到pbkdf2_sha256&#xff08;&#xff08;Password-Based Key Derivation Function 2&#xff09;&#xff09;加密算法&#xff0c;这里做些代码测试、总结。 PBKDF2简介 PBKDF2是一种基于密码的密钥派生函数&#xff0c;用于从用户提供的…

cv2技术原理-图像旋转原理及手动实现

cv2技术原理-图像旋转原理及手动实现 1、图像旋转opencv实现2、cv2.getRotationMatrix2D函数解释3、数学原理推导旋转矩阵M4、手动计算旋转矩阵M5、旋转矩阵M的使用6、使用旋转矩阵M手动实现旋转功能 1、图像旋转opencv实现 图像旋转在对数据集数据增强&#xff08;主要是随机…

Spring 声明式事务控制

1. 编程式事务控制相关对象 1.1 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器&#xff0c;它提供了我们常用的操作事务的方法。 PlatformTransactionManager 是接口类型&#xff0c;不同的 Dao 层技术则有不同的实现类。例如:Dao层技…

Sileo安装插件报错:Depends mobilesubstrate

Sileo安装插件报错 iOS 15.8系统&#xff0c;使用palera1n越狱&#xff0c;然后使用Sileo安装插件的时候&#xff0c;有些插件会报错&#xff1a;Depends mobilesubstrate&#xff08;比如AppStore plus&#xff09; 报错的原因分析 从提示信息很容易可以看出&#xff0c;当…