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…

【VVC】类和编码树了解

1. CodingStructure类 CodingStructure 类表示视频编码中的结构层次&#xff0c;用于存储编码单元&#xff08;CU&#xff09;、预测单元&#xff08;PU&#xff09;和变换单元&#xff08;TU&#xff09;等信息。 主要成员变量&#xff1a; area: 表示当前编码单元的区域。…

【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;这使得…

node学习之常用内置模块

这里只列举一些常用的&#xff0c;具体使用方法请查看官网 一、os模块 const os require("node:os"); // 获取计算机cup信息 // console.log(os.cpus());// 获取当前操作系统的换行符 // console.log(os.EOL);// 获取系统架构 // console.log(os.arch());// 以整数…

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(_:)修改器给一个视图添加动画效果非常容易。 下载起步项目并跟着本篇教程一步步实践…

Linux下tcpwrappers防火墙介绍

tcpwrappers&#xff08;防火墙&#xff09; &#xff0d;&#xff0d;过滤TCP包头(/usr/sbin/tcpd) /etc/hosts.allow 允许 /etc/hosts.deny 拒绝 匹配顺序 tcp包头----<wrappers.so> ------- /etc/hosts.allow ------- /etc/hosts.deny 匹配规则< 规则马上写&…

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

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

算法之链表知识

一、链表的概念 链表是一种常见的数据结构&#xff0c;用于存储数据元素的集合。它由一系列节点组成&#xff0c;每个节点包含数据和指向下一个节点的指针。这种数据结构在动态内存分配中非常有用&#xff0c;因为它不需要连续的内存空间。 二、单向链表和双向链表 单向链表&a…

Rust基础学习-Rust宏

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

Java中类初始化的奥秘

一、概述 在 Java 语言中&#xff0c;类的加载、链接&#xff08;验证、准备、解析&#xff09;和初始化过程都是在程序运行期间完成的。 其中加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的。解析阶段可以在初始化之前也可以在初始化之后再开始(又叫作运行时绑定、动…

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

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

六级作文---3.图画类

六级作文—3.图画类 范文 As is illustrated in the graph, the share of urban population increased from 19.39% to 60.6% between 1980 and 2019. From my perspective, the above figures reveal a currently prevailing tendency and represent China’s achievements i…

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

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