Java 的循环

Java 有三种循环:for,while,do while。

for

基本语法:

for (循环变量初始化; 循环条件; 循环变量迭代){循环语句;
}

程序示例:

public static void main(String[] args) {for (int i = 0, j = 0; i < 3; i++, j--) {System.out.println("Hello World");}
}

循环变量初始化可以定义多个变量,循环变量迭代可以有多个。

程序示例:

// 需求:从键盘录入两个数字,表示一个范围,统计这个范围中,既能被 3 整除,又能被 5 整除的数字有多少个?import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入第一个整数:");int num1 = sc.nextInt();System.out.print("请输入第二个整数:");int num2 = sc.nextInt();int min = num1 < num2 ? num1 : num2;int max = num1 > num2 ? num1 : num2;int count = 0;for (int i = min; i <= max; i++) {if (i % 3 == 0 && i % 5 == 0)++count;}System.out.print("从" + min + "到" + max + "既能被3整除又能被5整除的数字有" + count + "个。");}
}

执行结果 1:

请输入第一个整数:1
请输入第二个整数:20
从1到20既能被3整除又能被5整除的数字有1个。

执行结果 2:

请输入第一个整数:20
请输入第二个整数:1
从1到20既能被3整除又能被5整除的数字有1个。

错误程序示例 1:

public static void main(String[] args) {int i = 9;for (int i = 0, j = 0; i < 3; i++, j--) { // 已在方法 main(java.lang.String[]) 中定义了变量 iSystem.out.println("Hello World");}
}

错误程序示例 2:

public static void main(String[] args) {for (int i = 0, j = 0; i < 3; i++, j--) {int i = 9;  // 已在方法 main(java.lang.String[]) 中定义了变量 iSystem.out.println("Hello World");}
}

错误程序示例 3:

public static void main(String[] args) {int i = 9;for (int a = 0, j = 0; a < 3; i++, j--) {int i = 9; // 已在方法 main(java.lang.String[])中定义了变量 iSystem.out.println("Hello World");}
}

都会报错:已在方法 main(java.lang.String[]) 中定义了变量 i。

//正确
public static void main(String[] args) {for (int i = 0, j = 0; i < 3; i++, j--) {System.out.println("Hello World");}for (int i = 0, j = 0; i < 3; i++, j--) {System.out.println("Hello World");}
}

主 scope 和子 scope 不能重复定义,两个子 scope 可重复定义。

循环条件返回一个 boolean 值。

for 循环头的三个表达式都可以省略,但是分号不能省略,省略循环条件表示一直为真。

快速书写 for 循环的方法:

先输入 50.fori,然后回车:

[图片]

自动生成了一个 for 循环,起始为 0,终止为 50,循环变量是自动的,且会保证不会发生作用域冲突:

[图片]

while

基本语法:

循环变量初始化;
while (循环条件){循环体;循环变量迭代;
}

while 循环也有四个要素,只是放置的位置不一样。

练习:

// 需求:世界最高山峰是珠穆朗玛峰(8844.43米 = 8844430毫米),
// 假如我有一张足够大的纸,它的厚度是0.1毫米。
// 请问,我折叠多少次,可以折成珠穆朗玛峰的高度?public static void main(String[] args) {int HEIGHT = 8844430;double init = 0.1;int count = 0;while (init <= HEIGHT) {init *= 2;++count;}System.out.println(init);System.out.println(count);
}

执行结果:

1.34217728E7
27

练习:

// 回文数:
// 需求:给你一个整数x。
// 如果x是一个回文整数,打印true,否则,返回false。
// 解释:回文数是指正序(从左向右)和倒序(从右向左)读都是是一样的整数。
// 例如,121是回文,而123不是。import java.util.Scanner;public class whileTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入一个整数:");int n = sc.nextInt();int tmp = n;int num = 0;while (tmp != 0) {int get = tmp % 10;tmp /= 10;num = num * 10 + get;}System.out.println(n == num);}
}

执行结果:

请输入一个整数:121
true

练习:

// 需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围)。
// 将两数相除,要求不使用乘法、除法和 % 运算符。
// 得到商和余数。import java.util.Scanner;public class whileTest2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入被除数:");int dividend = sc.nextInt();System.out.print("请输入除数:");int divisor = sc.nextInt();int count = 0;while (dividend >= divisor) {dividend -= divisor;++count;}System.out.println("商为" + count + ",余数为" + dividend);}
}

执行结果:

请输入被除数:13
请输入除数:3
商为4,余数为1

循环条件返回一个 boolean 值。

程序示例:

public class While {public static void main(String[] args) {int i = 0;while (i) {System.out.println("Hello");}}
}

报错: 不兼容的类型: int 无法转换为 boolean

for 和 while 的对比:

相同点:运行规则都是一样的。

区别:for 循环中,循环控制变量归属于 for 循环的语法结构中,在 for 循环结束后,就不能再次被访问了。while 循环中,循环控制变量不归属于 while,在 while 循环结束之后,该变量还可以继续使用。如果 for 循环的循环控制变量在 for 前面定义,而不是在 for 循环头中定义,则当 for 结束了该变量依旧可以使用。

能用 for 的地方一定能用 while 进行改写,能用 while 的地方一定能用 for 进行改写。

一般如果知道循环次数或者循环范围,就用 for,否则用 while。无限循环是不知道循环次数的,因此无限循环一般都使用 while。

do while

基本语法:

循环变量初始化;
do{循环体;循环变量迭代;
}while (循环条件);

do while 是关键字。

也有四要素,只是位置不一样。

循环条件返回一个 boolean 值。

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

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

相关文章

在虚拟机上搭建 Docker Kafka 宿主机器程序无法访问解决方法

1、问题描述 在虚拟机CentOS-7上搭建的Docker Kafka ,docker内部可以创建Topic、可以生产者数据、可以消费数据&#xff0c;而在宿主机开发程序无法消费Docker Kafka的数据。 1.1、运行情况 [dockerlocalhost ~]$ docker ps -a CONTAINER ID IMAGE COMMAND…

还不会线程池?JUC线程池源码级万字解析

线程池主要解决了两个问题&#xff1a; 第一个是当大量执行异步任务的时候提供较好的性能&#xff1b;在不使用线程池的时候&#xff0c;每次需要执行一个异步任务都需要新建一个 Thread 来进行&#xff0c;而线程的创建和销毁都是需要时间的&#xff0c;所以可以通过线程池来实…

AI论文速读 | 2024[ICML]FlashST:简单通用的流量预测提示微调框架

题目&#xff1a; FlashST: A Simple and Universal Prompt-Tuning Framework for Traffic Prediction 作者&#xff1a;Zhonghang Li, Lianghao Xia&#xff08;夏良昊&#xff09;, Yong Xu&#xff08;徐勇&#xff09;, Chao Huang 机构&#xff1a;华南理工大学&#xf…

【SpringBoot】SpringBoot整合RabbitMQ消息中间件,实现延迟队列和死信队列

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;死信队列 RabbitMQ的工作模式 死信队列的工作模式 二、&#x1f349;RabbitMQ相关的安装 三、&#x1f34e;SpringBoot引入RabbitMQ 1.引入依赖 2.创建队列和交换器 2.1 变量声明 2.2 创建…

在群晖上通过Docker部署DB-GPT

最近一直有网友在后台私信&#xff0c;发的内容高度统一&#xff0c;只有后面 8 位数字不一样&#xff0c;都是 &#xff03;22232 xxxxxxxx&#xff0c;有谁知道是什么意思吗&#xff1f;在我印象中&#xff0c;这是第二次这么大规模的发类似的字符串了 什么是 DB-GPT ? DB-G…

Linux lvm卷扩容之SSM

介绍 SSM&#xff08;System Storage Manager&#xff09;是系统存储管理器&#xff0c;它是一种统一的命令行界面&#xff0c;用于管理各种存储设备。通过SSM&#xff0c;用户可以方便地管理、配置和监控存储系统。检查关于可用硬驱和LVM卷的信息。显示关于现有磁盘存储设备、…

O2OA(翱途)开发应用平台(v9)开发实战(3)-如何做信息发布

内容管理就是用来发布信息的&#xff0c;比如说发布单位的内部信息&#xff1a;像公司新闻、通知公告、规章制度等等。 接下来我们来介绍一下如何创建&#xff0c;比如我要创建一个栏目&#xff0c;专门用来发布公司的规章制度 需求 规章制度 首先从菜单打开“内容管理设置…

平衡二叉树AVL

平衡二叉树是一种特殊的二叉查找树&#xff0c;其中每个节点的左右子树的高度差不超过1。这种树的平衡性质使其在多种操作下保持较高的效率。 平衡二叉树的定义与性质 严格定义&#xff1a;在平衡二叉树中&#xff0c;任一节点的两个子树的高度最大差别为一&#xff0c;这使得…

Linux卸载RocketMQ教程【带图文命令巨详细】

巨详细Linux卸载RocketMQ教程 #查询rocketmq进程 ps -ef | grep rocketmq #杀掉相关进程 kill -9 进程id #查找安装目录 find / -name runbroker.sh #删除rocketMQ目录 rm -rf 安装目录框起来的就是进程id&#xff0c;全部杀掉 这里就是我的安装目录&#xff0c;我的删除命令…

SwiftUI五视图动画和转场

代码下载 使用SwiftUI可以把视图状态的改变转成动画过程&#xff0c;SwiftUI会处理所有复杂的动画细节。在这篇中&#xff0c;会给跟踪用户徒步的图表视图添加动画&#xff0c;使用animation(_:)修改器给一个视图添加动画效果非常容易。 下载起步项目并跟着本篇教程一步步实践…

AI 写高考作文丨10 款大模型 “交卷”,实力水平如何?

前言 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的未来科技&#xff0c;而是逐渐融入我们日常生活的实用工具。从智能语音助手到自动驾驶汽车&#xff0c;从智能家居系统到精准医疗诊断&#xff0c;AI技术正以其强大的计算能力和数…

Rust基础学习-Rust宏

Rust中的宏是生成另一段代码的一段代码。可以根据输入生成代码&#xff0c;简化重复模式&#xff0c;使得代码更加简洁。比如我们一直在用的println!,vec!,panic!都是宏。 创建宏 可以使用macro_rules!创建一个宏&#xff1a; macro_rules! macro_name {(...) > {...} }这…

c#与汇川plc通信 使用官网API库

前言 上位机开发中有时会要求与PLC进行通信&#xff0c;汇川官网也有好用的API库方便大家使用。记录一下开发过程。 1.下载资料 汇川官网地址&#xff1a;汇川技术 - 推进工业文明 共创美好生活 打开后选择&#xff1a;服务与支持-》资料下载-》 资料下载 这里可以直接搜索&am…

C++学习插曲:“name“的初始化操作由“case“标签跳过

问题 "name"的初始化操作由"case"标签跳过 问题代码 case 3: // 3、删除联系人string name;cout << "请输入删除联系人姓名&#xff1a;" << endl;cin >> name;if (isExistPerson(&abs, name) -1){cout << "…

【刷题篇】分治-归并排序

文章目录 1、排序数组2、交易逆序对的总数3、计算右侧小于当前元素的个数4、翻转对 1、排序数组 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 class Solution { public:vector<int> tmp;void mergeSort(vector<int>& nums,int left,int right){…

cocos creator3.7版本拖拽事件处理

前言&#xff1a;网上能找到的资料都太落后了&#xff0c;导致哥们用AI去写&#xff0c;全是瞎B写&#xff0c;版本都不对。贴点实际有用的。别老捣鼓你那破convertToNodeSpaceAR或者convertToNodeSpace了。 核心代码 touch.getDeltaX() touch.getDeltaY() 在cocoscreator3…

python-自幂数判断

[题目描述]&#xff1a; 自幂数是指&#xff0c;一个N 位数&#xff0c;满足各位数字N 次方之和是本身。例如&#xff0c;153153 是 33 位数&#xff0c;其每位数的 33 次方之和&#xff0c;135333153135333153&#xff0c;因此 153153 是自幂数&#xff1b;16341634 是 44 位数…

简单快速设置Windows和Ubuntu双系统双引导

一、参考资料 Windows和Ubuntu双系统安装教程 二、设置引导 1. 安装EasyBCD 下载并安装 EasyBCD 2. 设置Windows引导 3. 设置Ubuntu引导 4. 启动系统 遇到这种情况&#xff0c;直接Enter回车。 三、修复引导 如果引导区损坏&#xff0c;导致无法进入系统&#xff0c;可以…

FuTalk设计周刊-Vol.041

&#x1f525;AI漫谈 热点捕手 1、国产GPTs来了&#xff0c;基于智谱第4代大模型 全自研第四代基座大模型GLM-4&#xff0c;且所有更新迭代的能力全量上线。GLM-4性能相比GLM-3提升60%&#xff0c;逼近GPT-4&#xff08;11月6日最新版本效果&#xff09;。而同时推出的GLM-4-…

【漏洞复现】多客圈子论坛系统 httpGet 任意文件读取漏洞

0x01 产品简介 多客圈子论坛系统是一种面向特定人群或特定话题的社交网络&#xff0c;它提供了用户之间交流、分享、讨论的平台。在这个系统中&#xff0c;用户可以创建、加入不同的圈子&#xff0c;圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、…