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

【JAVASE】循环结构

⭐ 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:浅谈Java
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖

循环

  • 1. 循环结构
    • 1.1 while 循环
    • 1.2 break
    • 1.3 continue
    • 1.4 for 循环
    • 1.5 do...while循环
  • 2. 输入输出
    • 2.1 输出到控制台
    • 2.2 从键盘输入
  • 🎊彩蛋
    • 猜数字游戏

1. 循环结构

1.1 while 循环

基本语法格式:

while(循环条件){循环语句;
}

循环条件为 true,则执行循环语句;否则结束循环。
一个循环,肯定有开始,有结束

实例1:打印 1-10 的数字

public static void main(String[] args) {int num = 1;while (num <= 10) {System.out.println(num);num++;}
}

🍤 运行结果:

在这里插入图片描述

实例2:计算 1-100 的和

 public static void main(String[] args) {int n = 1;int sum = 0;while (n <= 100) {sum += n;//sum=sum+n,实现累加n++;}System.out.println(sum);}

🍤 运行结果:

在这里插入图片描述

实例3:求 1-100 以内偶数的和

  //1-100偶数的和
public static void main(String[] args) {int sum1 = 0;int a = 2;while (a <= 100) {sum1 += a;a += 2;}System.out.println(sum1);
}//1-100奇数的和
public static void main(String[] args) {int sum2 = 0;int a = 1;while (a <= 100) {sum2 += a;a += 2;}System.out.println(sum2);
}            

实例4:计算 5 的阶乘

5!=54321
4!=4321
3!=3
21
2!=2
1
1!=1
0!=1

public static void main(String[] args) {int n = 1;int result = 1;while (n <= 5) {result *= n;//累乘n++;}System.out.println(result);
}

🍤 运行结果:

在这里插入图片描述

实例5:计算 1!+2!+…+5!

这里既要算加法,还要算阶乘。在每一个数字阶乘计算后,然后求和,我们可以采用嵌套循环,内循环负责求阶乘,外循环负责求和。

public static void main(String[] args) {int num = 1;int sum = 0;// 外层循环负责求阶乘的和while (num <= 5) {int k = 1;int i = 1;// 里层循环负责完成求阶乘while (i <= num) {k *= i;//k=k*ii++;}sum += k;//sum=sum+knum++;}System.out.println("sum = " + sum);
}

🍤 运行结果:

在这里插入图片描述

实例6:找到1-100之间既能被3整除也能被5整除的数

public static void main(String[] args) {int  i = 1;while (i <= 100) {if(i % 15 != 0) {i++;continue;//有关continue的介绍在下面}System.out.println(i);i++;}
}

🍤 运行结果:

在这里插入图片描述

注:

  • 和 if 类似,while 下面的语句可以不写 { } ,但是不写的时候只能支持一条语句,建议还是加上 { }。
  • 和 if 类似,while 后面的 { 建议和 while 写在同一行。
  • 和 if 类似,while 后面不要多写分号,否则可能导致循环不能正确执行。

比如:

int num = 1;
while (num <= 10); {System.out.println(num);num++;
}
//[无任何输出, 程序死循环]

这里为 while 的语句体(这是一个空语句),实际的 { } 部分和循环无关,此时循环条件 num <= 10 恒成立,导致代码死循环

1.2 break

break 的功能是让循环提前结束

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

public static void main(String[] args) {int num = 100;while (num <= 200) {if (num % 3 == 0) {System.out.println("找到了 3 的倍数, 为:" + num);break;}num++;}
}

🍤 运行结果:

在这里插入图片描述

执行到 break 就会让循环结束。

1.3 continue

continue 的功能是跳过这次循环,立即进入下次循环

实例:找到 100 - 200 中所有 3 的倍数

public static void main(String[] args) {int num = 100;while (num <= 200) {if (num % 3 != 0) {num++; // 这里的 ++ 不要忘记! 否则会死循环.continue;}System.out.println("找到了 3 的倍数, 为:" + num);num++;}
}

🍤 运行结果:

在这里插入图片描述

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

1.4 for 循环

基本语法:

for(表达式1;布尔表达式2;表达式3){表达式4;
}

表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
表达式2: 循环条件,满足则循环继续,否则循环结束
表达式3: 循环变量更新方式

实例1:打印 1-10 的数字

public static void main(String[] args) {for (int i = 1; i <= 10; i++) {System.out.println(i);}
}

🍤 运行结果:

在这里插入图片描述

实例2:计算 1-100 的和

 public static void main(String[] args) {int sum=0;for (int i = 1; i <= 100; i++) {sum += i;//sum=sum+i 累加//第一次:sum=0+1=1//第二次:sum=1+2=3//第三次:sum=3+3=6...}System.out.println("sum = " + sum);}

实例3:计算 5 的阶乘

public static void main(String[] args) {int result = 1;for (int i = 1; i <= 5; i++) {result *= i;//第一次:result=1*1=1//第二次:result=1*2=2//第三次:result=2*3=6...}System.out.println("result = " + result);}

实例4:计算 1!+2!+…+5!

public static void main(String[] args) {int sum = 0;//外循环:求和for (int i = 1; i <= 5; i++) {int tmp = 1;//内循环:计算每位数字的阶乘for (int j = 1; j <= i; j++) {tmp *= j;}sum += tmp;}System.out.println("sum = " + sum);}

注:

  • 和 if 类似,for 下面的语句可以不写 { } ,但是不写的时候只能支持一条语句,建议还是加上 { }。
  • 和 if 类似,for 后面的 { 建议和 while 写在同一行。
  • 和 if 类似,for 后面不要多写分号,否则可能导致循环不能正确执行。
  • 和while循环一样,结束单趟循环用continue,结束整个循环用break。

1.5 do…while循环

基本语法:

do{循环语句;
}while(循环条件);

先执行循环语句,再判定循环条件,循环条件成立则继续执行,否则循环结束。

实例: 打印 1-10 的数字

public static void main(String[] args) {int num = 1;//num 的初始条件do {System.out.println(num);num++;} while (num <= 10);//循环条件}

注:

  • do while 循环最后的分号不要忘记。
  • 一般 do while 很少用到, 更推荐使用 for 和 while。
  • 无论是否满足循环条件,都会先执行一次循环语句。

2. 输入输出

2.1 输出到控制台

基本语法:

System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出

println 输出的内容自带 \n,print 不带 \n。(\n:换行)
printf 的格式化输出方式和 C 语言的 printf 是基本一致的。

代码示例:

public static void main(String[] args) {System.out.println("hello world");//直接打印 hello worldint x = 10;System.out.printf("x = %d\n", x);//打印 x=10
}

格式化字符串

转换符类型举例结果
d十进制整数(“%d”,100)100
x十六进制整数(“%x”,100)64
o八进制整数(“%o”,100)144
f定点浮点数(“%f”,100f)100.000000
s字符串(“%s”,100)100
c字符(“%c”,‘1’)1
b布尔值(“%b”,100)true
%百分号(“%.2f%%”,2/7f)0.29%

2.2 从键盘输入

使用 Scanner 读取字符串/整数/浮点数

import java.util.Scanner; // 需要导入 util 包public class Cycle_logitic {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//输入,sc 由用户自己定义System.out.println("请输入你的姓名:");//输出String name = sc.nextLine();System.out.println("请输入你的年龄:");int age = sc.nextInt();System.out.println("请输入你的工资:");float salary = sc.nextFloat();System.out.println("你的信息如下:");System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);sc.close(); // 注意, 要记得调用关闭方法}

🍤 运行结果:

在这里插入图片描述

使用 Scanner 循环读取 N 个数字,并求取其平均值

 public static void main(String[] args) {Scanner sc = new Scanner(System.in);int sum = 0;int num = 0;while (sc.hasNextInt()) {int tmp = sc.nextInt();//输入sum += tmp;//求和num++;}//输出System.out.println("sum = " + sum);System.out.println("avg = " + sum / num);//计算均值sc.close();}

🍤 运行结果:

在这里插入图片描述

🎊彩蛋

猜数字游戏

玩法:玩家随便输入1-100以内的整数,计算机会提示你是否猜对,如果没猜对,会告诉玩家是猜大了还是猜小了,然后用户继续猜数,直到成功。

程序设计关键:

  • 如何设置 1-100 以内的随机数
  • 判断随机数与用户输入的值的大小
  • 在猜对前,用户如何循环输入数字
  • 猜对后又如何结束循环

1. 在 Java 中设置随机数需要用到一个包:

import java.util.Random;

如果想要控制在 100 以内,代码实现是:

Random random = new Random(); // 默认随机种子是系统时间
int toGuess = random.nextInt(100);//设置范围:[0-100)+1

2. 用户输入数字:

上文已经总结过,如何输入一个数字。用户输入时也需要一个包:

import java.util.Scanner;
//实现输入数字
Scanner sc = new Scanner(System.in);//这里的 sc 由用户自定义

3. 判断用户输入的数字大小:

这里我们用 if 语句处理:

int num = sc.nextInt();//将输入的数字赋给 num
if (num < toGuess) {System.out.println("低了");
} else if (num > toGuess) {System.out.println("高了");
} else {System.out.println("猜对了");
break;//跳出循环
}

4. 然后我们将代码整合一下:

import java.util.Scanner;
import java.util.Random;
public static void main(String[] args) {Random random = new Random(); // 默认随机种子是系统时间Scanner sc = new Scanner(System.in);int toGuess = random.nextInt(100);while (true) {System.out.println("请输入要输入的数字: (1-100)");int num = sc.nextInt();if (num < toGuess) {System.out.println("低了");} else if (num > toGuess) {System.out.println("高了");} else {System.out.println("猜对了");break;}}sc.close();}

🍤 运行结果:

在这里插入图片描述
这只是简易版的猜数字游戏,你还可以用 switch 语句去设置一个菜单选项控制游戏的开始等等功能,去美化你的游戏


在这里插入图片描述

相关文章:

【JAVASE】循环结构

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 循环 1. 循环结构1.1 while 循环1.2 bre…...

NoSQL之Redis配置使用

目录 一、关系数据库与非关系型数据库 1.1.关系型数据库的概述 1.2关系型数据库的优缺点 1.2.1优点 1.2.2缺点 1.3.非关系型数据库的概述 二.关系数据库与非关系型数据库的区别 2.1数据存储方式不同 2.2扩展方式不同 2.3对事务性的支持不同 2.4非关系型数据库产生背景 2…...

Ansible最佳实践之Playbook使用过滤器处理网络地址

写在前面 使用过滤器检查、验证和操作包含网络信息的变量理解不足小伙伴帮忙指正 傍晚时分&#xff0c;你坐在屋檐下&#xff0c;看着天慢慢地黑下去&#xff0c;心里寂寞而凄凉&#xff0c;感到自己的生命被剥夺了。当时我是个年轻人&#xff0c;但我害怕这样生活下去&#xf…...

测试常见前端bug

目录 协作 测试方法 标签&#xff1a;标签 内容/ref/ 判断 arr&&arr.length 交互 样式不生效&#xff1a;devtools查找&#xff0c;编译前的标签&#xff0c;运行时不一定存在 可交互的需要提示 hover样式 没有交互逻辑&#xff0c;就不要设置交互 无法交互…...

【Python数据分析】Python常用内置函数(一)

&#x1f389;欢迎来到Python专栏~Python常用内置函数&#xff08;一&#xff09; ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文…...

OpenCV图像处理-图像分割-MeanShift

MeanShift 1. 基本概念2.代码示例 1. 基本概念 MeanShift严格说来并不是用来对图像进行分割的&#xff0c;而是在色彩层面的平滑滤波。它会中和色彩分布相近的颜色&#xff0c;平滑色彩细节&#xff0c;侵蚀掉面积较小的的颜色区域&#xff0c;它以图像上任意一点P为圆心&…...

【Rust 基础篇】Rust Trait 实现:灵活的接口抽象

导言 Rust是一种以安全性和高效性著称的系统级编程语言&#xff0c;其设计哲学是在不损失性能的前提下&#xff0c;保障代码的内存安全和线程安全。为了实现这一目标&#xff0c;Rust引入了"所有权系统"、"借用检查器"等特性&#xff0c;有效地避免了常见…...

【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示

目录 一、功能需求 二、开发环境 1、硬件&#xff1a; 2、软件&#xff1a; 3、引脚分配&#xff1a; 三、关键点 1、设计模式之工厂模式 2、wiringPi库下的相关硬件操作函数调用 3、语音模块的串口通信 4、线程 5、摄像头的实时监控和拍照功能 6、人脸识别 四、编…...

ElasticSearch基础篇-条件查询与映射

ElasticSearch基础篇二 条件查询 GET http://10.192.193.98:9200/shopping/_search?qtitle:小米手机q:代表查询条件 响应结果 {"took": 772,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped…...

大模型部署框架 FastLLM 实现细节解析

0x0. 前言 接着 大模型部署框架 FastLLM 简要解析 这篇文章首先梳理了一下FastLLM的调用链和关键的数据结构&#xff0c;然后解析了 FastLLM 的一些实现细节和CPU/GPU后端实现采用的优化技巧。 0x1. 调用链和数据结构解析 以chatglm-6b的支持为例&#xff0c;函数入口在 htt…...

Flutter ios真机调试连接断开后应用闪退

使用ios真机调试的时候&#xff0c;能正常打开应用&#xff0c;但是当数据线断开连接的时候&#xff0c;应用就会关闭&#xff0c;重新打开就会闪退。 原因是flutter默认在开发过程中使用debug模式编译 只需要将debug选择为release 重新编译就行。...

序列化,反序列化之实例

别怕&#xff0c;我一直陪着你 一.知识1.魔术方法 二.实例1.绕过__wakeup, private2.php://filter, data://, __tostring3. 一.知识 1.魔术方法 __construct() 当一个对象创建时自动调用 __destruct() 当对象被销毁时自动调用 (php绝大多数情况下会自动调用销毁对象) __sleep…...

2022年全国职业院校技能大赛(高职组)“软件测试”赛项竞赛任务书

2022年全国职业院校技能大赛&#xff08;高职组&#xff09; “软件测试”赛项竞赛任务书 2022年7月 一、竞赛时间、内容及成绩组成 &#xff08;一&#xff09;竞赛时间 本阶段竞赛时间共为8小时&#xff0c;参赛选手自行安排任务进度&#xff0c;休息、饮水、如厕等不设专…...

第18节:R语言分析:临床安全性数据的数据分析

临床安全性数据的数据分析 背景 医疗器械临床试验中收集的数据的主要组成部分是关于患者安全的。 不良事件被定义为“受试者、使用者或其他人的任何不良医疗事件、非预期疾病或伤害,或不良临床体征(包括异常实验室发现),无论是否与研究医疗器械相关”。 收集并用于此数据…...

36.悬浮板

悬浮板 html部分 <div class"container"><div class"square"></div> </div>css部分 *{margin: 0;padding: 0; } body{background-color: #111;height: 100vh;overflow: hidden;display: flex;justify-content: center;align-it…...

BLE基础理论/Android BLE开发示例

参考&#xff1a;https://blog.csdn.net/qq_36075612/article/details/127739150?spm1001.2014.3001.5502 参考&#xff1a; https://blog.csdn.net/qq_36075612/article/details/122772966?spm1001.2014.3001.5502 目录 蓝牙的分类传统蓝牙低功耗蓝牙 蓝牙专业词汇&#xff…...

rocketmq 5.13任意时间延迟消息

原理是采用timewhile 实现的&#xff0c;源码分析可以参考 https://blog.csdn.net/sinat_14840559/article/details/129266105 除了useDelayLevel 已经默认改为false private boolean useDelayLevel false;官方示意代码在public class TimerMessageProducer for (int i 0;…...

小程序picker 在苹果手机不兼容 bug,按month时在iPhone 显示不正确及自动定位时间问题

如下图&#xff1a;点击弹出时间列表&#xff1a;日历控件点击选择显示1年1月 解决: 加上起始时间字段 <picker mode"date" value"{{date}}" start"1970-09-01" end"2030-09-01"></picker> 问题二&#xff1a; 还是&a…...

区块链服务网络的顶层设计与应用实践

日前&#xff0c;2023全球数字经济大会专题论坛&#xff1a;Web3.0发展趋势专题论坛暨2023区块链、元宇宙蓝皮书发布会在北京举行。本次论坛上隆重发布了《中国区块链发展报告&#xff08;2023&#xff09;》&#xff0c;对我国区块链行业在2022年的发展状况进行了总结梳理&…...

tomcat日志输出乱码

在Tomcat中&#xff0c;默认的字符编码可能导致应用参数日志出现乱码问题。这通常发生在接收来自客户端的请求参数&#xff0c;并将其记录到日志文件时。 Tomcat默认使用平台的默认字符编码&#xff0c;这可能是不稳定的&#xff0c;特别是当应用程序运行在不同的操作系统上时…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...