首页 > 编程语言 >Java循环结构

Java循环结构

时间:2024-06-08 21:01:17浏览次数:29  
标签:语句 do Java while 循环 执行 public 结构

Java循环结构

循环结构可以看成是条件判断语句和转向语句的结合。循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。

while循环

while是最基本的循环,它的结构为:

 while(布尔表达式){
 //循环内容
 }
  • 只要布尔表达式为true,循环就会一直执行下去

  • 我们大多数情况是让循环停止下来的,我们需要一个让表达式失效的方式来结束循环

  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等

  • 循环条件一直为true就会造成无线循环,正常编程中应该尽量避免死循环,会影响程序性能或造成程序卡死崩溃

    通过输出1-100来看while循环

 public class while01 {
     public static void main(String[] args) {
          //输出1-100
         int i = 0;
         while(i<100){
             i++;
             System.out.println(i);
         }
     }
 }

在布尔表达式内做出限制条件,当i不小于100时会调出循环,当i<100,i进行自增并输出自增后的值。

while语句运行流程,从while循环进入,判断布尔表达式,真则执行循环体。从执行语句之后,再次回到布尔表达式进行判断,直到布尔表达式判断为错误时,跳出循环。

do...while
  • 对于while语句而言,如果不满足条件,则不能进入循环。但我们有时候需要及时不满足条件也至少执行一次。

  • do...while循环和while循环相似,不同的是,do...while循环至少会执行一次

     do{
         //代码语句
     }while(布尔表达式);

    while和do...while的区别

    • while先判断后执行,do...while先执行后判断!

    • do...while总是保证循环体会被至少执行一次!这是他们的主要区别

do...while循环从按照顺序结构来看,do之后直接进入循环体执行一次,之后进行while判断布尔表达式,因此do...while至少执行一次循环体。

 public class while01 {
     public static void main(String[] args) {
          //输出1-100
         int i = 0;
         int sum = 0;
         do{
             sum = sum + i;
             i++;
         }while(i <= 100);
         System.out.println(sum);
     }
 }

while和do...while对比一下

在代码中,放置相同的循环体。

while循环时,a的值为0,判断a=0,不执行while循环体

do...while循环时间,先执行一次a输出,再进行判断跳出,不再执行输出

For循环
  • 虽然虽有的循环结构都可以用whlie或者do...while表示,但Java提供了另一种语句-for循环,是一些循环结构变得更简单

  • for循环语句是支持迭代的一种通用机构,是最有效、最灵活的循环结构

  • for循环执行的次数是在执行前就确定的,语法格式如下:

  • for(初始化;布尔表达式;更新){
         //代码语句
     }

for循环执行流程,首先初始化语句(可以为空语句),一般为定义之后进行布尔表达式判断,然后执行循环体,在循环体执行结束之后进行更新,再进行布尔表达式判断,在判断式和更新中之间运行,只要判断真就执行循环体,更新再判断,直到判断假跳出循环。

练习1:计算0到100之间所有奇数和偶数的和

定义奇数偶数,利用for循环从0开始加到100,在此过程中对每个数进行判断奇偶。使用if判断每个数字取模i%2是否有余数,余1则为奇无则为偶。然后将各自累加得到总值

 public class ForDemo02 {
     public static void main(String[] args) {
         //练习1:计算0到100之间的奇数和偶数和
         int oddSum = 0;//奇数
         int evenSum = 0;//偶数
         for (int i = 0; i < 100; i++) {
             if(i%2!=0){
                 oddSum+=i;
             }else{
                 evenSum+=i;
             }
         }
         System.out.println("奇数的和:"+oddSum);
         System.out.println("偶数的和:"+evenSum);
     }
 }

i%2可以得到商后的余数,来判断奇偶数

练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

使用for循环从1开始判断到1000,再使用if判断能被5整除的数字,每行第三个数字都是能被5和3整除,所以通过判定每行最后一个数字i对15取模。

 public class ForDemo03 {
     public static void main(String[] args) {
         //练习2:使用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
         for (int i = 0; i < 1000; i++) {
             if(i%5==0){
                 System.out.print(i+"\t");
             }
             if(i%(5*3)==0){
                 System.out.println();
             }
         }
     }
 }
                                             
增强for循环

语法

 for(声明语句:表达式){
     //代码句子
 }
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等

  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法

 public class ForDemo05 {
     public static void main(String[] args) {
         int[] numbers = {10,20,30,40,50};//定义了一个数组
         for(int i=0;i<5;i++) {
             System.out.println(numbers[i]);
         }
         System.out.println("======");//分割线
             //遍历数组的元素
             for(int x:numbers){
                 System.out.println(x);
             }
         }
     }

增强for循环底层也是使用了迭代器获取的,只不过获取迭代器由jvm完成,不需要我们获取迭代器而已,所以在使用增强for循环变量元素的过程中不准使用集合对象对集合的元素个数进行修改。

普通for循环与增强for循环的区别:普通for循环可以没有遍历的目标,而增强for循环一定要有遍历的目标。

break continue
  • break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中的剩余的语句(break语句也在switch语句中使用)

  • continue语句用在循环语句中,用于终止某次循环过程,跳过循环中尚未执行的语句,接着进行下一次是否执行循环的判定

break
 public static void main(String[] args) {
         int i =0;
         while(i<100){
             i++;
             System.out.println(i);
             if(i==30){
                 break;
             }
         }
     }

while循环设置i<100,当i小于100时会进行不断自增并且自增一次就输出一次,if判定语句当i=30时会break跳出while循环

break语句用于终止循环,可以用在while循环和for循环中,当循环条件不为False或者序列还没有完全被迭代完毕时,使用break语句也可以使循环停止执行。

continue

大部分情况用于在当前循环条件合适时,不执行当前循环中之后的代码,直接跳出本次循环,但会继续执行下次循环

 public class Continue {
     public static void main(String[] args) {
         int i = 0;
         while(i<100){
             i++;
             if(i%10==0){
                 System.out.println();
                 continue;
             }
             System.out.print(i);
         }
     }
 }

定义i,while从1到100自增每个数字进行判定,对i取模如果能被10整除,则换行输出并且终止当前语句,进行下一次循环。

标签:语句,do,Java,while,循环,执行,public,结构
From: https://blog.csdn.net/qq_57286188/article/details/139448746

相关文章

  • C语言笔记第12篇:自定义类型(struct结构体)
    1、结构体类型的声明为什么要有自定义的结构类型呢?这是因为稍微复杂的类型,直接使用内置类型是不行的!比如:描述一个人或 一本书的价格、版号等信息。1.1结构的创建结构体是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。1.1.1 结构的声明structt......
  • c语言分支循环语句
    与这相关的逻辑运算符和求素数的四种方法都在主页哦 if语句(三种形式)1.无else语句部分1)语法形式if(表达式)语句12)介绍如果表达式为真(成立),则语句执行;如果表达式为假(不成立),则语句不执行。注意:在c语言中,0表示真,非零表示假#include<stdio.h>intmain(){intn=0;scanf......
  • 【JavaScript脚本宇宙】通知新风尚:打造互动性十足的Web提示系统
    定制通知体验:深入了解JavaScript通知库前言在现代web开发中,通知库扮演着至关重要的角色,它们为用户界面的交互性和用户体验提供了关键支持。本文将介绍一些常用的JavaScript通知库,从简单实用到高度定制化各有特色,帮助开发者在项目中轻松实现各种通知功能。欢迎订阅专栏:Ja......
  • 优先队列的实现:基于最小堆的 Java 实现
    优先队列是一种重要的数据结构,与普通队列不同,它每次从队列中取出的是具有最高优先级的元素。本文将介绍如何使用最小堆来实现优先队列,并提供详细的Java代码示例和解释。什么是优先队列?优先队列是一种抽象数据类型,其中每个元素都有一个与之相关的优先级。在删除操作中,总......
  • 链表-循环链表
    循环链表可以像链表一样只有单向引用,也可以像双向链表一样有双向引用。循环链表和链表之间唯一的区别在于最后一个元素指向下一个元素的指针(tail.next)不是引用undefined,而是指向第一个元素(head).单链表:this.tail.next=this.head;双向链表:this.tail.next=this.head;......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript旅游网站(河南平顶山)
    HTML+CSS+JS【旅游网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript购物商城(美食)
    HTML+CSS+JS【购物商城】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 推荐一个专业的 JavaScript 中文转拼音的库,同事都在用,小巧好用上手快(带私活)
    背景在开发过程中,我们可能会遇到将中文汉字转换成拼音或者拿到我们的汉字的首字母、韵母等等之类的业务需求,自己写一套过于麻烦,所以需要一个库来快速实现,pinyin-pro正是这样一个小巧上手快的工具库,帮助你在业务中操作汉字拼音转换来去自如介绍pinyin-pro是一个专业的Ja......
  • Java基于系统api监控文件新增事件
    得益于jvm对系统api的封装,本文的方法实际是对jvm封装后的方法的再次封装。在linux上,对于的api为inotify,在windows上,对于的api则为ReadDirectoryChangesW。本文应用的jdk版本为8。业务字段:@DatapublicclassFileMessageDto{privateLocalDateTimecreateTime;privat......
  • 还在为线上BUG苦苦找寻?试试IntelliJ IDEA远程调试线上Java程序
    ......