2.5 循环结构语句

news2025/1/11 8:54:44

在程序设计中,有时需要反复执行一段相同的代码,这时就需要使用循环结构来实现,Java语言提供了while循环、do-while循环、for循环。

一般情况下,一个循环结构包含四部分内容:

  • 初始化部分,设置循环开始时变量初值。

  • 循环条件,一般是一个布尔表达式,当表达式为true时执行循环体,为false时退出循环。

  • 迭代部分,改变变量的状态。

  • 循环体部分,需要重复执行的代码。

1. while循环

while循环语句和选择结构语句类似,都是根据判断条件决定是否执行大括号内的执行语句。区别在于,while循环语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到循环条件不成立,while循环结束。

(1)while循环语句语法格式

[初始化部分]
while(循环条件){
    执行语句
...
}

在上面的语法结构中,{}中的执行语句被称作循环体,循环体是否执行取决于循环条件。当循环条件为true时,循环体就会执行。循环体执行完毕,程序继续判断循环条件,如果条件仍为true则继续执行循环体,直到循环条件为false时,整个循环过程才会结束。

while循环的执行流程如下图所示。

(2)while循环案例

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

public static void main(String[] args) {
    Random random = new Random();
    int magic = random.nextInt(100,201);
    Scanner input = new Scanner(System.in);
    System.out.print("请输入你要猜的数:");
    int guess = input.nextInt();
    while(guess != magic){
        if(guess > magic){
            System.out.print("错误,输入太大请重猜:");
        }else {
            System.out.print("错误,输入太小请重猜:");
        }
        guess = input.nextInt();
    }
    System.out.println("回答正确,该数是:" + magic);
}

2. do-while循环

(1)do-while循环语句语法格式

[初始化部分]
do {
    执行语句
 ...
} while(循环条件);

在上面的语法结构中,关键字do后面{}中的执行语句是循环体。do…while循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件决定是否继续执行。

(2)do-while循环案例

要求用户从键盘输入若干个int型数,输入0则结束,程序计算并输出这些数的总和。

public static void main(String[] args) {
    int sum = 0;
    int num;
    Scanner input = new Scanner(System.in);
    do{
        System.out.print("请输入一个数,输入0结束:");
        num = input.nextInt();
        sum += num;
    }while(num != 0);
    System.out.println("总和为:" + sum);
}

3. for循环

(1)for循环格式

for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。for循环语句的语法格式如下。

for(初始化表达式; 循环条件; 操作表达式){
     执行语句
     ...
}

在上面的语法格式中,for关键字后面( )中包括了3部分内容,分别是初始化表达式、循环条件和操作表达式,它们之间用分号(;)分隔,{}中的执行语句为循环体。

(2)for循环注意事项

在初始化部分,可以为空,也可以声明多个变量,多个变量中间用“,”隔开。

for(int i = 0;;)
for(int i=0 , j=0 ; i <= 10 ; i++)
for(  ; i < j ; i++)

在迭代部分,可以为空,也可以有多个表达式,多个表达式中间用“,”隔开。

for(int i = 0 ; i < j ; ) 
for(int i = 0 ; i < 10 ; i++)
for(int i = 0; i < j ; i++ , j++)

循环体部分也可以为空。

for( ; ; )   //无限循环,循环体中应包含结束循环代码

(3)for循环案例

编写程序,打印所有的水仙花数。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如153是一个“水仙花数”,因为153=13+53+33。

public static void main(String[] args) {
    for(int i = 100;i < 1000;i++){
        int bai = i / 100;
        int shi = (i / 10) % 10;
        int ge = i % 10;
        int num = (int) (Math.pow(bai,3) + Math.pow(shi,3) + Math.pow(ge,3));
        if(num == i){
            System.out.println("水仙花数有:" + num);
        }
    }
}

4. 增强的for循环

(1)增强的for循环格式

增强的for循环,用来迭代数组或对象集合的每个元素,只能按顺序访问数组中元素,增强的for循环语句的语法格式如下。

for(type identifier : expression){
    //循环体
}

在上面的语法格式中,实现对数组或集合中的每个元素,执行一次循环体中的语句。其中,expression为数组或集合对象,identifier为数组或集合对象,type为数组或集合中的元素类型。

(2)增强的for循环案例

使用增强for循环输出数组元素值。

public static void main(String[] args) {
    int[] nums = {1,2,3,4,5};
    for(int num : nums){
        System.out.println(num);
    }
}

5. 循环嵌套

循环嵌套是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,其中最常见的是在for循环中嵌套for循环。

(1)循环的嵌套案例

打印九九乘法表,要求使用嵌套的for循环。

public static void main(String[] args) {
    for(int i = 1;i <= 9;i++){
        for(int j = 1;j <= i;j++){
            System.out.print( j + " * " + i + " = " + j * i + "\t");
        }
        System.out.print("\n");
    }
}

6. 跳转语句

跳转语句用语实现循环执行过程中程序流程的跳转,Java中的跳转语句有break语句和contine语句。

(1)break语句

break语句是用来跳出while、do-while、for或switch结构的执行。

break语句案例,编程计算1+2+3+…+n之和,和超过100结束,输出最终的和。

public static void main(String[] args) {
    int sum = 0;
    for(int i = 1; ;i++){
        sum += i;
        if(sum > 100){  //超过100终止
            break;
        }
    }
    System.out.println("和为:" + sum);
}

(2)continue语句

continue语句与break语句类似,但它只终止执行当前的迭代,导致控制权从下一次迭代开始。

continue语句案例,编程计算1到10之间的数的和,能被3整除的数除外。

public static void main(String[] args) {
    int sum = 0;
    for(int i = 1;i <= 10;i++){
        if(i % 3 == 0){
            continue;
        }
        sum += i;
    }
    System.out.println("和为:" + sum);
}

7. 练习

从键盘输入5个数,找出其中最大值和最小值。

public static void main(String[] args) {
    int max = 0;
    int min = 0;
    int num;
    Scanner input = new Scanner(System.in);
    for(int i = 0;i < 4;i++){
        System.out.print("请输入第" + (i+1) + "个数:");
        num = input.nextInt();
        if(i == 0){
            max = num;
            min = num;
        }else{
            if(num > max){
                max = num;
            }
            if(num < min){
                min = num;
            }
        }
    }
    System.out.println("最大值为:" + max);
    System.out.println("最小值为:" + min);
}

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

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

相关文章

正交试验设计法

正交实验设计 一、什么是正交试验设计法&#xff1f; 是一种成对测试交互的系统的统计方法。它提供了一种能对所有变量对的组合进行典型覆盖&#xff08;均匀分布&#xff09;的方法。 可以从大量的试验点中挑出适量的、有代表性的点&#xff0c;利用“正交表”&#xff0c;…

Rsync远程同步+inotify监控

一、rsync同步简介 一款快速增量备份工具 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09; 是一个开源的快速备份工具&#xff0c;可支持本地复制&#xff0c;或者与其他SSH,rsync主机同步。 cp&#xff1a;将原文件完整的复制到指定的路径下&#xff0c;而且…

Vector底层原理——面试之我答

Vector概述 vector是STL中最常用的容器&#xff0c;vector主要功能是作动态数组来弥补传统数组的缺点&#xff0c;如&#xff1a;不灵活&#xff0c;不方便插入等等。 Vector支持随机访问&#xff0c;因此访问某一个元素的时间复杂度是O(1)。 vector中存储着许多易用的函数方法…

自动化测试入门知识 —— 数据驱动测试

一、什么是数据驱动测试&#xff1f; 数据驱动测试是一种测试方法&#xff0c;它的核心思想是通过不同的测试数据来验证同一个测试逻辑。通常情况下&#xff0c;测试用例中的输入数据和预期结果会被提取出来&#xff0c;以便可以通过不同的测试数据进行重复执行。 数据驱动测…

spacy 中文语义分析下载安装使用

概念 spaCy 下载 安装spacy pip install -U spacy -i https://pypi.tuna.tsinghua.edu.cn/simple 安装模型 https://github.com/explosion/spacy-models/releases 找到对应的模型&#xff0c;下载&#xff0c;如下图 安装 下载是gz&#xff0c;下载后安装 pip instal…

Flullter学习第一天:什么是Flullter与Flullter安装

1.简介 Flutter使用dart作为主要开发语言,开发后可多端编译,并且能调用原生api 2.安装 官网:Install | Flutter 让我们读下为中国用户特制的文档,访问中国官网 Flutter: 为所有屏幕创造精彩 - Flutter 中文开发者网站 - Flutter 获取 Flutter SDK 点击下方的安装包&#x…

记录一个iOS实现视频分片缓存拖拽快进不能播放的问题

代码现状 首先来看一下我们将视频数据塞给请求的代码 - (void)finishLoadingWithLoadingRequest:(IdiotResourceTask *)task {// printf("哈哈执行到这里执行到到这里\n");printf("哈哈哈数量数量%ld\n", self.taskList.count);//填充信息task.loadingRe…

Python/Java/Php/C#/Go/C/C++这几个主力语言,谁到底真的不行

1.前言 阿里最近又进行了史诗级的大裁员&#xff0c;IT行业肉眼可见的持续性衰退与没落。当潮水退却&#xff0c;才能看出谁在裸泳。作为当今计算机编程界的几大主力语言&#xff0c;谁才真正的裸泳者呢&#xff1f;引用原文:这几个主力语言&#xff0c;谁到底真的不行 2.描述…

Java项目-苍穹外卖-Day11-Apache ECharts数据统计

文章目录 前言Apache ECharts介绍入门案例 营业额统计需求分析代码开发功能测试 订单统计需求分析代码开发功能测试 销量排名统计需求分析代码开发功能测试 前言 主要是以下四项的统计&#xff0c;以不同形式的图形进行展示 Apache ECharts 介绍 入门案例 自己去网站上看一…

MATLAB R2018b安装教程

目录 一、软件下载 二、软件介绍 三、安装须知 四、安装步骤 【最后】 &#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;MATLAB基础及应用&#x1f91d;希望作者的文章能…

Redis之string类型的三大编码解读

目录 string类型的三大编码 int 编码 embstr 编码 raw 编码 明明没有超过阈值,为什么变成raw&#xff1f; 查看数据类型相关命令 redis看看类型:type key 看看编码:object encoding debug结构:debug object person 在 Redis 中&#xff0c;String 类型的数据结构并…

EPICS电机支持(asynMotor)

EPICS电机支持 1&#xff09; 顶层对象是EPICS motor记录 已经对这个对象编写了很多代码&#xff1a;spec&#xff0c;IDL和Python类等 2&#xff09;下一层是EPICS设备支持 了解motor记录&#xff0c;与驱动会话 3&#xff09;最底层是EPICS驱动 对motor记录一无所知&am…

FastJson 漏洞复现

文章目录 FastJson 漏洞复现1. FastJson 1.2.24 反序列化导致任意命令执行漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞复现1.3.1 环境启动1.3.2 漏洞检测1.3.3 漏洞验证 1.4 漏洞利用1.5 修复方案 2. Fastjson 1.2.47 远程命令执行漏洞2.1 漏洞描述2.2 漏洞复现2.2.1 环境启动2.2.2 …

SV-315C 15寸触模屏 I3工控机 网络广播主机

SV-315C 15寸触模屏 I3工控机 网络广播主机 智能公共广播系统IP网络广播主机 ※ 高档7U铝合金黑色拉丝面板&#xff0c;美观大方&#xff1b; ※ 嵌入触摸屏和数字矩阵键盘操作集成软件&#xff1b; ※ 工业级机柜式机箱设计&#xff0c;有较高的防磁、防尘、防冲击的能力…

FPGA原理与结构——时钟IP核的使用与测试

一、前言 本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程&#xff0c;在学习一个IP核的使用之前&#xff0c;首先需要对于IP核的具体参数和原理有一个基本的了解&#xff0c;具体可以参考&#xff1a; FPGA原理与结构——时钟IP核原理学习https://blog.c…

[网鼎杯 2020 青龙组]singal详细题解--VMP 直接逆向,angr模拟执行,ponce符号化

文章目录 直接逆向提取opcode获取指令执行流getflag注意 使用Angr使用Ponce插件安装并配置Ponce具体操作 参考资料 直接逆向 提取opcode 主函数并不复杂,关键内容在vm_opcode中,先提取出main函数中的opcode unsigned int OpCode[114] {0x0000000A, 0x00000004, 0x00000010,…

Spring上下文模块ApplicationContextAware

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

《数字图像处理-OpenCV/Python》连载(6)基于Matplotlib显示图像

《数字图像处理-OpenCV/Python》连载&#xff08;6&#xff09;基于Matplotlib显示图像 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第1章 图像的基本操作 …

软件系统验收测试需要注意的地方

验收测试 一、软件验收测试含义&#xff1a; 软件验收测试是指测试人员检验软件是否符合软件规格说明书和用户需求的测试活动。 验收测试是软件测试的最后一个环节&#xff0c;也是最为关键的一个要素。 它关系到软件开发公司的产品质量&#xff0c;也关系到需求方的产品能…

二分查找[整数二分]

引例 不知道你有没有玩过猜数字游戏,在0到100之间随机选取一个数,让你猜是几,比如这个数是67,如果你猜了50,就会提示你小了,那么你就会去51到100之间猜,你猜了75,就会提示你大了,你就会去51到74之间去猜,就这样一直猜,数字可取的区间越来越小,用不了多久就可以猜出.当你每次都…