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

Java语言程序设计——篇三(2)

循环结构

  • 概述
    • 1️⃣while循环
        • 例题讲解
    • 2️⃣do-while循环
        • 例题讲解
  • 🚩while循环与do-while循环区别
    • 3️⃣for循环
        • 例题讲解
    • 4️⃣循环的嵌套
      • 🏮例题讲解

概述

⭐️Java语言提供了4种循环结构:
(1) while循环
(2) do-while循环
(3) for循环
(4)增强的for循环
⭐️一般情况下,一个循环结构包含四部分内容:
(1)初始化部分
(2)循环条件
(3)循环体部分
(4) 迭代部分

1️⃣while循环

while循环语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。
语法结构如下所示:
[初始化部分]
while (条件表达式){
// 循环体
[迭代部分]
}

注意: 如果条件表达式的值一开始就为假,则循环体一次也不执行,但循环条件表达式一定能够执行。
在这里插入图片描述
              “当循环”

例题讲解

例:随机产生一个100~200之间的整数,用户从键盘上输入所猜的数,程序显示是否猜中的消息,如果没有猜中要求用户继续猜,直到猜中为止。

int magic = (int)(Math.random()*101)+100;
分析:java.long.Math类的random()方法,返回一个0.01.0(不包括1.0)的double型随机数,乘以101转化为0100的整数,再加上100,得到100~200之间的整数

import java.util.Scanner;
public class GuessNumber {public static void main(String[] args) {int magic = (int)(Math.random()*101)+100;Scanner input = new Scanner(System.in);System.out.print("请输入你猜的数:");int guess = input.nextInt();while(guess!=magic){if(guess > magic){System.out.println("错误!太大,请重猜");}else{System.out.println("错误!太小,请重猜");}guess = input.nextInt();}System.out.println("恭喜你,答对了!\n该数是"+magic);}
}

没有guess = input.nextInt();这行代码就会变成死循环

2️⃣do-while循环

语法结构如下所示:
[初始化部分]
do{
  // 循环体
[迭代部分]
}while(条件);

执行顺序是:
执行循环体语句,然后判断循环条件表达式的值。表达式为true时,继续执行循环体,表达式为false则结束循环。
注意:
即使条件表达式值为
循环体至少要执行一次。
在这里插入图片描述
              “直到型循环”

例题讲解

假设我们要计算用户输入的一系列正整数之和,直到用户输入0为止。do-while循环的特点是先执行一次循环体,然后检查条件,如果条件为真,则继续循环;如果条件为假,则退出循环。

package shujia_test1;import java.util.Scanner;public class Csdn3_3 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int number;int sum = 0; // 用于存储数字之和do {System.out.print("请输入一个正整数(输入0结束): ");number = scanner.nextInt(); // 读取用户输入if (number > 0) {sum += number; // 如果输入的是正整数,则加到总和中}} while (number != 0); // 当输入不是0时,继续循环System.out.println("输入的正整数之和为: " + sum);scanner.close();}
}

🚩while循环与do-while循环区别

1. 循环条件的判断时机

  • while循环:是先判断条件再执行循环体。也就是说,在每次循环开始前,都会先检查条件表达式是否为真。如果条件为真,则执行循环体内的语句;如果条件为假,则直接跳过循环体,继续执行循环之后的语句。因此,while循环有可能一次都不执行循环体。
  • do-while循环:是先执行循环体再判断条件。即,无论条件是否满足,循环体都会至少执行一次。然后,在循环体执行完毕后,再检查条件表达式的值。如果条件为真,则继续执行下一次循环;如果条件为假,则退出循环。
    2. 循环结构的表达式
  • while循环的表达式为:while(表达式){循环体}。这里,表达式是循环的条件,只有在条件为真时,才会执行循环体中的语句。
  • do-while循环的表达式为:do{循环体;}while(条件表达式);。这里,循环体会先执行一次,然后检查条件表达式的值。如果条件为真,则继续执行循环体;如果条件为假,则退出循环。
    3. 适用场景
  • while循环适用于事先知道循环次数或循环条件的情况,特别是当循环可能一次都不执行时。
  • do-while循环适用于至少需要执行一次循环体的情况,无论条件是否满足。这在需要至少进行一次初始化操作或验证操作的场景中特别有用。

3️⃣for循环

语法结构如下所示:
for ([初始化部分];[条件]; [迭代部分]){
// 循环体
}

初始化部分:只执行一次,循环变量赋初值;
条件:循环条件,用来判断是否继续循环;可以省略(死循环)
迭代部分:用于修改循环变量的值,改变循环条件
循环体:单条语句或复合语句
在这里插入图片描述
🌈循环控制变量可以在for循环中声明和初始化,但在循环外不能引用它。
🌈for循环中的三个表达式可以均为空。若条件表达式也为空,则表示当前循环是一个无限循环。
🌈for循环、while循环、do-while循环有时可相互转换。

例题讲解

编写程序,输出100~1000所有能被5和6整除的数,每行显示10个,数字之间用一个空格字符隔开。

package shujia_test1;public class Csdn3_4 {public static void main(String[] args) {int count = 0; // 用于计数每行已输出的数字数量for (int i = 100; i <= 1000; i++) {if (i % 5 == 0 && i % 6 == 0) { // 检查数字是否同时被5和6整除System.out.print(i + " "); // 输出数字及空格count++; // 增加计数// 当每行输出了10个数字时,换行if (count % 10 == 0) {System.out.println();}}}}
}

运行结果:
在这里插入图片描述

4️⃣循环的嵌套

嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。
在循环嵌套时,外循环必须完整地包含内循环,不能相互交叉。
while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套。
for(初始化;条件;迭代){
// 外层循环体
for(初始化;条件;迭代){
// 内层循环体
}
  // 其他语句
}
在这里插入图片描述

🏮例题讲解

例:编写程序打印输出如下乘法表

package shujia_test1;public class Csdn3_5 {public static void main(String[] args) {for (int i = 1; i < 10; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + "*" + i + "=" + i * j + "  ");}System.out.println();}}
}

运行结果:
在这里插入图片描述
博主用心写,读者点关注,互动传真情,知识不迷路。

相关文章:

Java语言程序设计——篇三(2)

循环结构 概述1️⃣while循环例题讲解 2️⃣do-while循环例题讲解 &#x1f6a9;while循环与do-while循环区别3️⃣for循环例题讲解 4️⃣循环的嵌套&#x1f3ee;例题讲解 概述 ⭐️Java语言提供了4种循环结构&#xff1a; (1) while循环 (2) do-while循环 (3) for循环 (4)增…...

如何实现一个分布式锁

如何实现一个分布式锁 本篇内容主要介绍如何使用 Java 语言实现一个注解式的分布式锁&#xff0c;主要是通过注解AOP 环绕通知来实现。 1. 锁注解 我们首先写一个锁的注解 /*** 分布式锁注解*/ Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Documente…...

Ajax从零到实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

编程参考 - 在C++移动构造函数声明中使用noexcept

在 C 中&#xff0c;noexcept 是用于表示函数不抛出异常的指定符。它既可用于常规函数&#xff0c;也可用于特殊成员函数&#xff0c;包括构造函数和析构函数。使用 noexcept 可以帮助编译器进行优化&#xff0c;提高代码的安全性和正确性。 In C, noexcept is a specifier use…...

Vue2/Vue3实现全局/局部添加防篡改水印的效果。删除元素无效!更改元素属性无效!支持图片、元素、视频等等。

水印目的 版权保护:水印可以在图片、文档或视频中嵌入作者、品牌或版权所有者的信息,以防止未经授权的复制、传播或使用。当其他人使用带有水印的内容时,可以追溯到原始作者或版权所有者,从而加强版权保护。 身份识别:水印可以用作作者或品牌的标识符,使观众能够轻松识…...

GuLi商城-商品服务-API-属性分组-获取分类属性分组

获取分类属性分组接口开发 操作的是这张表 造数据: 后台代码: @Override public PageUtils queryPage(Map<String, Object> params, Long catelogId) {//select * from pms_attr_group where catelog_id=? and (attr_group_id=key or attr_group_name like %key%)Stri…...

安全测试理论

安全测试理论 什么是安全测试&#xff1f; 安全测试&#xff1a;发现系统安全隐患的过程安全测试与传统测试区别 传统测试&#xff1a;发现bug为目的 安全测试&#xff1a;发现系统安全隐患什么是渗透测试 渗透测试&#xff1a;已成功入侵系统为目标的的攻击过程渗透测试与安全…...

序列化和反序列化

面试题&#xff1a;对序列化和反序列化的理解&#xff1f; 我们之所以需要序列化&#xff0c;它核心的目的是为了解决网络通信之间的对象传输的问题&#xff0c;也就是说&#xff0c;如何把当前JVM进程的一个对象&#xff0c;通过跨网络传输到另一个JVM进程里面&#xff0c;而序…...

OpenCV中使用Canny算法在图像中查找边缘

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 算法描述 Canny算法是一种广泛应用于计算机视觉和图像处理领域中的边缘检测算法。它由John F. Canny在1986年提出&#xff0c;旨在寻找给定噪声条件下的最佳边…...

基于springboot+vue+uniapp的机电公司管理信息系统

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

电子期刊制作实战教程:从零开始制作

​随着互联网的普及&#xff0c;电子期刊已经成为了信息传递的重要载体。它以便捷、环保、互动性强等特点受到了越来越多人的青睐。那么&#xff0c;如何从零开始制作一份吸引人的电子期刊呢&#xff1f; 1.要制作电子杂志,首先需要选择一款适合自己的软件。比如FLBOOK在线制作…...

11.FreeRTOS_事件组

事件组概述 事件组的作用&#xff1a; 可以等待某一个事件发生可以等待若干个事件发生可以等待若干个事件中的某一个事件发生 同步点是事件组的另一个使用方式&#xff0c;它可以让多个任务进行阻塞等待&#xff0c;当全部事件完成后&#xff0c;再一起解除任务的阻塞。常常…...

Python爬虫-爬取三国演义文本数据-bs4

bs4进行数据解析 -数据解析的原理: - 1.标签定位 -2.提取标签、标签属性中存储的数据值 - bs4数据解析的原理: - 1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中 -2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取 - 环境安装: - pi…...

html5——列表、表格

目录 列表 无序列表 有序列表 自定义列表 表格 基本结构 示例 表格的跨列 表格的跨行 列表 无序列表 <ul>【声明无序列表】 <li>河间驴肉火烧</li>【声明列表项】 <li>唐山棋子烧饼</li> <li>邯郸豆沫</li> <l…...

【Python字符串攻略】:玩转文字,编织程序的叙事艺术

文章目录 &#x1f680;一.字符串基础&#x1f308;二.查看数据类型⭐三.转化❤️四.字符串索引&#x1f6b2;五.字符串切片&#x1f3ac;六.字符串切片-步长☔七.反向切片注意事项&#x1f6b2;八.字符串&#x1f4a5;查&#x1f4a5;改&#x1f4a5;删 ❤️九.字符串拼接&…...

element form表单中密码框被自动赋值,并默认背景色为白色,手动输值后背景色才是自己配置的背景色,与表单的自动填充有关

事件背景&#xff1a; 一个表单&#xff0c;有两组需要输入密码的地方&#xff0c;两组都被填充用户名密码&#xff0c;其中一组是其他信息&#xff0c;不是用户名密码&#xff0c;也被填充了&#xff0c;且input背景色是白色&#xff0c;表单中的input已经手动配置为无背景色&…...

【UE5.1 角色练习】15-枪械射击——子弹发射物

目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中&#xff08;【UE5.1 角色练习】06-角色发射火球-part1&#xff09;我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”&#xff0c;用于表示…...

Zynq7000系列FPGA中的DMA控制器的编程限制

有关DMAC编程时适用的限制信息&#xff0c;有四个考虑因素&#xff1a; 固定非对齐突发Endian swap size restrictions&#xff1a;在数据传输或处理过程中&#xff0c;不同字节序&#xff08;Endian&#xff09;之间的转换和对应的限制在DMA周期内更新通道控制寄存器当MFIFO满…...

超简易高效的 AI绘图工具—与sd-webui一致界面,6G显存最高提升75%出图速率!(附安装包)

大家好&#xff0c;我是灵魂画师向阳 今天给大家分享一个基于Stable Diffusion WebUI 构建的AI绘图工具—sd-webui-forge&#xff0c;该工具的目标在于简化插件开发&#xff0c;优化资源管理&#xff0c;加速推理。 Forge承诺永远不会对Stable Diffusion WebUI用户界面添加不…...

ArduPilot开源代码之OpticalFlow_backend

ArduPilot开源代码之OpticalFlow_backend 1. 源由2. Library设计3. 重要例程3.1 OpticalFlow_backend::_update_frontend3.2 OpticalFlow_backend::_applyYaw 4. 总结5. 参考资料 1. 源由 光流计是一种低成本定位传感器&#xff0c;所有的光流计设备传感驱动代码抽象公共部分统…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...