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[]) 中定义了变量 i
        System.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[]) 中定义了变量 i
        System.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[])中定义了变量 i
        System.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 值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大神出新品,吴恩达开源机器翻译智能体项目

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

Clion控制台打印中文乱码

第一步 第二步 第三步 ctrlaltshift/ 把run.processes,with.pty

教育小程序开发:技术实现与实践案例

随着信息技术的不断进步&#xff0c;教育小程序在教育领域的应用越来越广泛。教育小程序开发不仅可以提高教学效率&#xff0c;还能够提供个性化的学习体验。本文将以技术代码为例&#xff0c;详细介绍教育小程序开发的关键技术和实践案例&#xff0c;帮助开发者更好地理解和实…

小公司要求真高

大家好&#xff0c;我是白露啊。 最近看到一个爽文帖&#xff0c;标题就是——“小公司要求真高”。 事情是这样的&#xff0c;一家的小公司在拿到简历之后&#xff0c;HR直接对楼主说&#xff1a;“你不合适&#xff0c;简历不行。” 言外之意就是嫌弃简历单薄&#xff0c;看…

IntelliJ IDEA 2024.1最新安装 亲测有效2099年

标题一&#xff1a;IDEA官方下载 ①如题&#xff0c;先到IDEA官方下载&#xff0c;简简单单 ②IDEA官方&#xff1a;IntelliJ IDEA – the Leading Java and Kotlin IDE 标题二&#xff1a;获取脚本 点这里获取 &#x1f31f;获取完后压缩&#xff0c;推荐与IDEA放在同一目…

白酒:茅台镇白酒的地域特色菜肴与搭配建议

在中国的美食文化中&#xff0c;酒与菜一直是密不可分的。茅台镇作为中国白酒的发源地&#xff0c;其白酒与地域特色菜肴的搭配更是有着深厚的历史底蕴。云仓酒庄作为茅台镇的知名酒庄&#xff0c;其豪迈白酒与当地特色菜肴的搭配&#xff0c;更是让人回味无穷。 茅台镇的菜肴以…

delmia中机器人末端固定工具

1 需要在工具上面建立点 在Device Building模式下 2 然后通过 set tool可以设置

Shell脚本 if语句

条件测试&#xff1a; $? 返回码 判断命令或者脚本是否执行成功&#xff08;最近的一条&#xff09; 0 true 为真就是成功 成立 非0 false 失败或者异常 test命令 可以进行条件测试 然后根据的是返回值来判断条件是否成立。 -e 测试目录或者文件是否存在 exist -d 测试…

宝兰德受邀出席第八届丝绸之路网络安全论坛

近日&#xff0c;2024第八届丝绸之路网络安全论坛在陕西宾馆会议中心成功举办&#xff0c;本次论坛以“汇聚万千智慧 夯实安全堤坝”为主题&#xff0c;由主论坛及密码技术与密评、教育行业网络安全、卫健行业网络安全三个平行分论坛组成&#xff0c;论坛邀请业内专家学者、企业…

MyBatisPlus代码生成器(交互式)快速指南

引言 本片文章是对代码生成器(交互)快速配置使用流程&#xff0c;更多配置方法可查看官方文档&#xff1a; 代码生成器配置官网 如有疑问欢迎评论区交流&#xff01; 文章目录 引言演示效果图引入相关依赖创建代码生成器对象引入Freemarker模板引擎依赖支持的模板引擎 MyBat…

HBase中Master初始化错误~

ERROR&#xff1a;org.apache.hadoop.hbase.PleaseHoldException:Master is initializing 1、停止HBase运行 2、启动zookeeper中的zkCli.sh服务 ./zookeeper/bin/zkCli.sh 3、执行完毕显示以下结果,删除habse文件夹 4、重新启动HBase即可。

如何关闭端口被占用的进程

如何关闭端口被占用的进程 操作步骤一、打开命令提示符&#xff08;Command Prompt&#xff09;二、查看占用端口的进程三、kill杀死占用端口的进程 操作步骤 一、打开命令提示符&#xff08;Command Prompt&#xff09; 使用 win R 打开命令行模式 然后在命令行窗口输入下…

基于机器学习和奇异值分解SVD的电池剩余使用寿命预测(Python)

采用k-最近邻KNN和随机森林算法建立预测模型。 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC # Support Vector Classifier from sklearn.preprocessing import StandardScaler from sklearn.metrics import accu…

权限维持--小结

权限维持 windows 域环境 基于验证 DLL 加载-SSP 基于验证 DLL 加载-HOOK 基于机制账号启用-DSRM 基于用户属性修改-SID-history 基于登录进程劫持-Skeleton-Key 单机 基于用户-隐藏用户 基于服务 TGT-黄金白银票据 基于软件-GotoHTTP&RustDesk 自启动 粘滞键 …

vue2组件封装实战系列之message组件之方法式调用

组件之 GfMessage 消息提示, 用于页面顶部消息栏的展示, 默认是居中显示, 可以通过设置属性来改变位置 消息组件有点类似 alert 组件,区别是 message 组件是不用写在页面上,而是通过调用方法来弹窗显示 效果预览 属性 参数类型说明可选值默认值visibleBoolean显示隐藏-falses…

Maven增强插件助你开发快人一步

因为之前的工作中一直用的Maven进行jar包管理&#xff0c;每次新加依赖都要去中央仓库上搜索下坐标&#xff0c;这里为了方便以SerchEveryWhere为入口&#xff0c;增加了一个Maven的搜索tab&#xff0c;输入你想要找的包名即可在idea中直接显示最新版对应的坐标以及cve数&#…

线程池处理Runnable任务

1、线程池处理Runnable任务 1.1、ThreadPoolExecutor创建线程池对象示例 ExecutorService pools new ThreadPoolExecutor&#xff08;3&#xff0c;5&#xff0c;8&#xff0c;TimeUnit.SECONDS&#xff0c;new ArrayBlockingQueue<>(6)&#xff0c;Executors.default…

查分易学生成绩查询网站

亲爱的老师们&#xff0c;分享一个超级方便的小程序——查分易小程序&#xff0c;可以让学生查询成绩变得快捷高效。 1.创建表格设置 老师要准备一个Excel表格&#xff0c;表头要设置比如“姓名&#xff0c;学号等。系统只认Sheet1&#xff0c;所以要确保查询的信息在第一个表…

双非本科一年20w,已是人中龙凤了

大家好&#xff0c;我是白露啊。 “双非本科一年20w已经是人中龙凤了”……吗&#xff1f; 牛客上刷到这条帖子&#xff0c;我一开始以为是一个钓鱼、引战贴。看完才觉得他说的很对&#xff0c;现在在求职选择工作的时候&#xff0c;网上都觉得得40万、50万&#xff0c;但当真…

基于DenseNet网络实现Cifar-10数据集分类

目录 1.作者介绍2.Cifar-10数据集介绍3.Densenet网络模型3.1网络背景3.2网络结构3.2.1Dense Block3.2.2Bottleneck层3.2.3Transition层3.2.4压缩 4.代码实现4.1数据加载4.2建立 DenseNet 网络模型4.3模型训练4.4训练代码4.5测试代码 参考链接 1.作者介绍 吴思雨&#xff0c;女…