Java基础:第十二讲 循环结构

Java入门 - 循环结构基础 第1关:Java循环结构之while循环 任务描述 本小节需要你完成一个做俯卧撑的小程序,效果如下: package step1; public class HelloWorld { public static void main(String[] args) { /*****start*****/ int i=1; while (i<=6){ System.out.println("做了"+i+"个俯卧撑"); i++; //运行一次i值加1 } 阅读详情

 

循环结构
    循环结构完成的功能是循环执行某段代码多次。
    循环结构可以使用for 循环、for-each 循环、while 循环和do-while 循环。
1. for循环
    for 循环的基本结构如下:
for( 表达式1; 表达式2; 表达式3)
{
    // 循环体
}
    表达式1 用于初始化,在整个循环过程只执行一次;表达式2 的结果应该为逻辑值,决定是否循环,如果为true ,则继续循环,如果为false ,则结束循环;表达式3 在每次循环完成之后执行,主要的作用是修改循环变量,循环多少次就会执行多少次;循环体就是要循环执行的部分。如果循环体只有一行代码,循环体的大括号可以省略。
    执行的具体过程如下:
(1)       首先执行表达式1 ,进行初始化;
(2)       然后执行表达式2 ,如果结果为true ,执行第(3 )步,如果结果为false ,执行第(5 )步;
(3)       执行循环体;
(4)       执行表达式3 ,转向表达式2 ;
(5)       结束
    从这个过程可以看出,表达式2 à 循环体 à 表达式3 形成了一个循环,表达式1 仅仅在循环之前来完成初始化,表达式2 决定是否循环,下面看一个例子。
    例:求1 到100 这100 个数的和。
    分析:如果人工计算可以这样来做1+2+3+4+…… 当然这样写让计算机做也可以,但是如果计算1 到10000 这10000 个数的和怎么办呢?写起来太累了,所以不能这样来写。可以这样想,计算1 到100 这些数字的和,可以这样理解:刚开始“和”为0 ,第一次把1 加到“和”上,第二次把2 加到“和”上,第三次把3 加到“和”上…… 加到100 为止,最终就得到这个“和”了。相当于每次都向“和”上加一个数字,重复做100 次,不同的是每次加的值不一样,这样可以设置一个变量,然后每次在计算之后修改这个变量的值就可以了,假设这个变量为i ,可以先让i 等于1 ,执行完之后,让i 等于2…… 这样就可以使用for 循环来完成了。
    首先需要定义一个“和”,这里使用sum ,初始值为0 ,可以这样写:
                int sum = 0;
    然后定义变量i ,每次循环的时候使用:
                int i;
    刚开始i 等于1 ,这个可以通过循环结构中的表达式1 完成,表达式1 完成的就是初始化任务,所以表达式1 可以写成:
                 i=1;
    循环中要完成的工作就是把i 添加到和上,所以循环体应该这样写:
                 sum = sum + i;
    每次循环完之后,需要改变i 的值,怎么改变呢?从1 到100 ,1 用完了是2 ,2 用完了是3 ,每次都是在原来的基础上加1 ,每次循环完之后都要改变i 的值,所以可以使用表达式3 ,表达式3 就是在完成循环之后执行的。所以表达式3 可以写成:
                  i++;
    后一个问题,就是循环到什么时候呢?要计算1 到100 的和,所以当i<=100 时需要把i 加到“和”上,如果i>100 ,就不需要再循环了,所以循环的条件是i<=100 ,表达式2 用于控制循环是否继续,所以表达式2 的内容就可以写成:
                 i<=100
    这样循环结构的几个部分都有了,所以得到下面的代码:
【例】
// ForTest.java
public class ForTest {
 public static void main(String[] args) {
      // sum存储和
      int sum = 0;
      // i表示循环变量
      int i;
     
      // i=0完成循环变量的初始化,i<=100表示循环的条件,
        // i++修改循环变量的值
      for(i=0;i<=100;i++){
          // 循环体
          sum+=i;
      }
      System.out.println("和为:"+sum);
 }
}
运行结果为:
和为:5050
     在使用for 循环的时候,必须明确几点:
(1)       要循环执行哪些语句,也就是循环体;
(2)       循环的初始状态是什么,也就是表达式1 的内容;
(3)       每次循环的区别在什么地方,如何修改这些变化的内容,也就是表达式3 的内容的确定;
(4)       确定循环的条件,循环到什么时候为止,也就是表达式2 的内容。
上面介绍的是最一般的情况,可能会出现下面的一些特殊情况:
(1)       表达式1 用于初始化,并且只执行一次,所以可以认为与循环无关,可以把初始化放在循环之前完成,这样就会形成下面的结构:
表达式1
         for(; 表达式2; 表达式3)
         {
               // 循环体
}
这样上面的求和代码可以变成下面的代码(main 方法中的部分):
      int sum = 0;
      int i;
      i=0;
      // 表达式1是一个空,但是分号不能省略
      for(;i<=100;i++)
          sum+=i;
      System.out.println("和为:"+sum);
(2)       每次循环之后使用表达式3 修改循环变量的值,只要循环一次,表达式3 就会执行一次,所以可以把表达式3 放在循环体的里面,效果是完全相同的,所以就有了下面的格式:
           for( 表达式1; 表达式2;)
          {
                   // 循环体
表达式3
}
上面的代码可以改成下面的样子了:
      int sum = 0;
      int i;
      for(i=0;i<=100;)
      {
          sum+=i;
          i++;
      }
      System.out.println("和为:"+sum);
(3)       表达式2 也可以省略,如果省略,循环就没有条件,循环也就不会在这里结束,相当于表达式2 的值为true 。那么怎么让循环停止呢?可以在循环体内结束循环,使用后面将要讲到的break 。可以把for 循环改成下面的格式:
          for( 表达式1;; 表达式3)
          {
    if(! 表达式2)
 break;
// 循环体
}
    【注意】因为原来表达式2 是循环的条件,而现在需要的是结束循环的条件,所以需要对表达式2 取反。
    按照这种结构,上面的代码可以变成:
      int sum = 0;
      int i;
      for(i=0;;i++)
      {
          if(!(i<=100))
              break;
          sum+=i;        
      }
              System.out.println(" 和为 :"+sum);
(4)       最典型的情况是3 个表达式全部省略 , 形成下面的结构 :
    表达式1
        for(;;)
       {
                    if(!( 表达式2))
                             break;
// 循环体
表达式3
}
上面的代码也就变成了 :
      int sum = 0;
      int i;
      i=0;
      for(;;)
      {
          sum+=i;
          i++;
          if(i>100)
              break;
      }
      System.out.println("和为:"+sum);
【注意】
(1)       不管怎么变化 ,for 循环中用于分割3 部分的分号不能少。
(2)       for() 括号后不能加分号,如果加了,相当于循环体是空语句。
下面是for 循环的8 种形式:
n for( 表达式1; 表达式2; 表达式3){…}
n for(; 表达式2; 表达式3){…}
n for( 表达式1;; 表达式3){…}
n for( 表达式1; 表达式2;){…}
n for(;; 表达式3){…}
n for(; 表达式2;){…}
n for( 表达式1;;){…}
n for(;;){…}
2. while循环
         while 循环的作用与for 循环基本相同,只是结构不一样。
    基本结构如下:
        while( 表达式1)
        {
               // 循环体
         }
    这个结构与for 循环体中省略初始化部分和修改循环状态部分之后的结构基本相同,表达式1 是循环的条件,与for 循环中的表达式2 的作用相同。这个结构更容易理解,只要表达式1 的值为true ,就执行循环体,否则,结束循环。表达式1 的值会随着循环体的执行而发生变化,否则要么死循环,要么一次也不执行。所以这里的循环体相当于for 循环中的循环体与修改循环状态的部分。
    例:假设1 到n 的和最接近10000 ,求n 。
    分析:1 到2 的和是3 ,1 到3 的和是6 ,1 到4 的和是10 ,随着n 的增加越来越接近10000 ,但是当和接近10000 的时候,再增加的话就又远离10000 ,所以循环结束的条件就是这个和与10000 之间的距离最小。如果距离没有达到最小,则继续循环。
    首先需要定义和,定义差值,定义循环变量,并进行初始化:
         表示和
               int sum = 0;
        表示原来的差距
                int dis1 = 10000;
        表示新的差距
               int dis2 = 10000;
                int i=1;
    然后要明确循环的内容:
                sum = sum+i;
                dis1 = dis2;
                dis2 = 10000-sum;
                if(dis2<0)
                      dis2=sum-10000;
                 i++;
    然后定义循环结束的条件:
                dis2<=dis1
    根据以上的分析,得到下面的代码:
【例】
// WhileTest.java
public class WhileTest {
 public static void main(String[] args) {
      // 表示和
      int sum = 0;
      // 表示上次和与10000的差值
      int dis1 = 10000;
      // 表示这次和与10000的差值
      int dis2 = 10000;
      // 循环变量
      int i=1;
      while(dis1>=dis2)
      {
          sum = sum+i;
          dis1 = dis2;
          dis2 = 10000-sum;
          if(dis2<0)
             dis2=sum-10000;
          i++;
      }
      i = i-2;
      System.out.println(i);
 }
 
}
    运行的结果为:
141
    【注意】while 循环的小括号后也不能加分号。
3. do-while循环
    与while 循环基本相同,格式如下:
do
{
 // 循环体
}while( 表达式1);
    表达式1 仍然是循环的条件,与while 循环基本相同,区别有以下两点:
(1)       先循环,然后判断条件,所以至少可以循环一次;
(2)       while( 表达式1) 后面必须有分号。
【例】输出1 到20 之间的偶数。
// DoWhileTest.java
public class DoWhileTest {
 public static void main(String[] args) {
      int i=1;
      do
      {
          if(i%2==0)
              System.out.println(i+" "); 
          i++;
      }while(i<=20);
 }
}
        while 循环与do-while 循环只有第一次循环的时候不一样,后面的过程完全一样,如果肯定能执行一次的话,两个的效果是完全一样的。
        for 循环与while 循环的区别主要是:for 循环通常是在知道循环次数的时候使用,而while 循环通常是在不知道循环次数的时候使用。
 
 
    李绪成 优快云 Blog : http://blog.youkuaiyun.com/javaeeteacher
Java基础——循环结构语句 在实际生活中经常会将同一件事情重复做很多次;例如一元换为1、2、5分的硬币,有多少兑换方法,在做眼保健操的第四节轮刮眼眶时,会重复的动作等。在java中有一种特殊的语句称为循环语句,可以将一段代码重复执行。循环语句分为while循环语句、do...while循环语句和for循环语句3种。 阅读详情

相关推荐

Educoder/头歌JAVA实训——JAVA入门:循环结构基础

循环结构是高级编程语言里面的三大基础核心之一,有了它我们的应用程序(应用软件)才能持续不断的为我们提供服务,或是快捷方便的为我们解决重复性的工作,因此掌握它对于我们整个 Java 编程至关重要,本实训我们来学习 Java 循环结构的基础部分。

舟舟的博客 6625

第二章 JAVA基本语法2

循环结构 for循环 public class Test { public static void main(String[] args) { for(int i=1;i<=5;i++) { System.out.println ("hello world"); }//初始化变量i,判断i是否小于等于5,满足则执行代码块,然后在执行更改表达式(i++) } } for语句例题:1. 编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行

X..RH 774

python从入门到实践课后题答案

python从入门到实践课后题答案

Java基础11-java进阶(2)【集合-Collection 】

Java进阶02 集合(1) 1 集合概述 1.1 集合的作用 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。 数组在内存存储方面的特点: 数组初始化以后,长度就确定了。 数组声明的类型,就决定了进行元素初始化时的类型 数组在存储数据方面的弊端: 数组初始化以后,长度就不可变了,不便于扩展 数组中提供的属性和方法少,不便于

小管博客空间站 321

Cadence Virtuoso实战:NMOS差分放大器设计与SPICE仿真全解析

本文详细解析了使用Cadence Virtuoso设计NMOS差分放大器并进行SPICE仿真的全流程。从基础设计要点、原理图绘制到工作点分析与性能调优,提供了实用的设计技巧和常见问题解决方案,帮助工程师高效完成模拟集成电路设计。重点介绍了差分放大器的关键参数设置、饱和区优化及版图设计注意事项,适用于ADC、DAC等高性能电路开发。

weixin_28340315的博客 611

SAP物料分类账(ML)避坑指南:激活顺序错了怎么办?从CKMSTART到差异分摊的完整流程

本文详细解析SAP物料分类账(ML)的正确激活顺序与配置流程,帮助用户避免常见陷阱如'LKW无科目'、'在制品重估失败'等问题。从CKMSTART到差异分摊的完整流程,涵盖关键配置节点、典型报错分析与应急处理方案,确保产品成本控制(CO-PC)模块的顺利运行。

weixin_42524708的博客 258

【Java】三大特殊类之------String类

三大特殊类 String类 Object类 包装类 String类: final class String 被final修饰的类不能被继承(为保证所有用户用到的String类都一样,只能使用,不能修改) 1.实例化方式 直接赋值 String str = "hello world"; 通过构造方法赋值 String str = new String("hello world"); 例子: ...

qq_43464809的博客 531

STM32 上 FreeRTOS 的启动与任务调度详解

4. SysTick定时器:FreeRTOS启动调度器后,会接管STM32的SysTick定时器,用于生成系统节拍,因此不要在HAL库中重复配置SysTick(比如HAL_Init()中已配置,无需再手动调用SysTick_Config()),否则会导致系统节拍异常,任务延迟不准。2. 任务栈大小需按需配置,不是越大越好(浪费RAM),也不能太小(会导致栈溢出),比如简单的传感器读取任务,1024字(4096字节)足够,复杂任务(比如串口接收+数据解析)可调整为2048字。

qq_40170041的博客 867

第11章 集合

11.8 练习 1、练习:判断输出结果为何? public class TestFor { public static void main(String[] args){ String[] str = new String[5]; for(String myStr : str){ m...

MObaiYUhai的博客 261

SDIO_WiFi驱动学习之SDIO架构介绍及源码分析

一、引言 因为WiFi驱动比较复杂,所以WiFi驱动的博客将分为两篇来写。 本篇博客主要介绍Linux下的SDIO架构及源码分析。 二、SDIO WiFi SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。 对于SDIO接口的WiFi,首先,它是一个SDIO的卡设备,然后具备了WiFi的功能。所

陈子陌的博客 1万+

多模态变体—ALIGN:高效的图像-文本学习

ALIGN 论文介绍了该模型的关键技术。无人工标注数据:使用互联网数据进行训练,不依赖人工清洗的数据集。高效的对比学习策略:采用大规模图像-文本配对数据,通过对比学习优化嵌入空间。支持零样本(zero-shot)学习:可以在没有专门训练的情况下执行多种任务,如分类、检索等。可扩展性强:ALIGN 采用高效的 CNN 或 Transformer 作为编码器,适用于大规模计算。

Azperk的博客 1218

Java循环结构详讲

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。 Java中有三种主要的循环结构: while循环 do…while循环 for循环 在Java5中引入了一种主要用于数组的增强型for循环。 1.while循环 语法: while(布尔表达式){ // 循环内容 } 只要布尔表达式为 true,循环就会一直执行下去。 实例: public class Demo{ public static void ...

qq_43098249的博客 1280

Cost-effective Attention Reuse across Multi-turn Conversations in Large Language Model Serving

通过多回合对话与人类互动是大型语言模型(LLM)的一个基本特征。然而,由于需要重复计算历史token的密钥值(KV)缓存,用于执行多回合会话的现有LLM服务引擎效率低下,从而导致高服务成本。为了解决这个问题,本文提出了AttentionStore,这是一种新的注意力机制,可以在多回合对话中重用KV缓存(即注意力重用),显著降低重复计算开销。AttentionStore维护一个分层的KV缓存系统,该系统利用经济高效的内存/存储介质为所有请求保存KV缓存。

c_cpp_csharp的专栏 394

【Java基础知识】 循环结构

本文系统讲解Java循环结构,涵盖for、while、do-while的语法与适用场景,剖析循环嵌套逻辑及break与continue的区别,并通过典型示例揭示“死循环”与“步进遗漏”等常见错误,帮助开发者掌握循环核心机制,编写高效安全的代码。

weixin_60274730的博客 2001

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1500

计算机组成原理(第三版)唐朔飞-第七章指令系统-课后习题

机器字长是指CPU一次能处理数据的位数通常与CPU的寄存器位数有关。指令字长是指机器指令中二进制代码的总位数。存储字长是指存储单元中存放二进制代码的总位数。三者可以相等也可以不等视不同机器而定。答:OP(4位)A1(6位)A_1(6位)A1​(6位)A2(6位)A_2(6位)A2​(6位)设二地址指令格式为该指令系统的基本格式,4位操作码共有16种编码,其中13种用来定义二地址指令,还剩3种可用作扩展标志。一地址指令条数=3∗26=192。

weixin_45735391的博客 7万+

Java的循环结构

再计算布尔表达式的值,如果其值是true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环。循环的次数是n,循环结束以后,i == n。循环的控制变量i,是选择从0开始还是从1开始,是判断i<n还是判断i<=n,对循环的次数,循环结束后变量的值都有影响。for循环像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1。执行循环操作代码,然后执行迭代部分,执行迭代完之后,判断循环条件。

2301_81698853的博客 1640

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java基础-循环结构

循环结构,while,do...while,for

m0_75024203的博客 1541

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java基础语法——循环结构

每日正能量 趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。 循环结构 【本章内容】1. while循环 2. do-while循环 3. for循环 【能力目标】1. 掌握信息的循环输出 2. 学会使用循环解决程序问题 3. 能够区分每种循环的应用场合 有些程序段在某些条件下重复执行多次,称为循环结构程序。Java提供了3种循环语句实现循环结构,包括while语句、do..

qq_52519008的博客 2799

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

10、Java基础——循环结构、三种循环结构的区别

一、for循环 1、语法格式: 2、执行流程 3、注意事项 二、while循环 1、语法格式 2、执行流程 3、注意事项 三、do-while循环 1、语法格式 2、执行流程 3、注意事项 四、比较while循环和do-while循环 五、for循环、while循环和do-while循环三种循环的区别

优快云_Loveletter的博客 1365

java循环结构使用

java循环结构使用: java中循环结构主要有for,while和do-while三种结构。但是主要构成都有以下的几部分:1.初始化部分 2.循环条件部分(boolean型)3.循环部分 4.迭代部分。接下来会详细介绍上述几个循环。 一. for循环 格式:for(初始化部分;循环条件部分;迭代部分) {循环体部分}; 执行顺序是初始化部分–>循环条件部分–>迭代部分–>循环体部分–>循环条件部分–>迭代部分–>循环体部分–>… (对于循环也没啥讲的,就根据例子

qq_51694024的博客 1800

JAVA基础——循环结构题目1答案

package test1; import java.util.Scanner; public class Test1 { public static void main(String[] args) { while(true){ int x=0; int y=0; while(true){ Scanner sc=new Scanner(System.in);...

独行无疆的博客 1904

Java基础知识14讲-09:Java循环结构

【Java基础知识14讲-09:Java循环结构】 程序依据判断条件决定是否重复执行循环体内的语句。 Java中循环结构: do do while while 9.1循环结构 while 如下: while(条件表达式) { 语句; } 如图: 当判断条件为真时,循环体语句就会重复执行 直到判断条件为假时才会跳出while循环 Java程序代码举例如下: /** * Created...

兰海泽的博客 348

Java循环结构

Java循环结构 java循环结构主要有三种:while、do-while、for结构。 一、while循环结构 while循环的格式为: 变化初始量 while(循环条件){ 循环体 } public static void main(String[] args) { //1.定义一个变量(不知道次数,控制台输入可以不设定变量) int i=1; //2.使用变量进行判断,只要满足条件,执行某块代码 while(i<=10){ System.out.println("第"

timicai的博客 3681

java第五章循环结构总结_第六讲《JAVA基础之循环结构》,循环有结束

先给大家分享一个小故事:记得读大学的时候考试成绩未达到自己的目标。为了表明自己勤奋学习的决心,我决定写一百遍“好好学习,天天向上!”。写着写着就发现特别无聊,因为这是一个有规律的重复操作。于是我就陷入冥想,我在思考我如果写10万遍会不会累死,要是我能创造一个机器人来写那多么好。当然想着想着就睡着了,但是从这件事儿中我得到一个结论:重复有规律的事儿不应该我们做。循环结构当程序中出现有规律的重复操作时...

weixin_39901332的博客 151
上一篇: Java Web基础:第五讲 手动构建Web应用
下一篇: 第十三讲 基本语法练习(看看你会不会出错)
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值