首页 > 编程语言 >Java流程控制-循环控制

Java流程控制-循环控制

时间:2023-12-09 14:22:06浏览次数:34  
标签:控制 Java int 流程 System while 循环 main public

免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动

1.循环控制

1.1 for循环

基本语法:

for(循环变量初始化;循环条件;循环变量迭代){

  循环操作(可以多条语句);

}

说明:

  • for关键字,表示循环控制
  • for有四要素(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
  • 如果循环操作只有一条语句,可以省略{},建议不要省略

循环执行流程分析

注意事项和细节说明:

  • 循环条件是返回一个布尔值的表达式
  • for(;循环判断条件;)钟的初始化和变量迭代可以写到其他地方,但是两边的分号不能省略
  • 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开
public class For01 {
    public static void main(String[] args) {
        int count=3;
        for(int i=0,j=0;i<count;i++,j+=2){
            System.out.println("i="+i+",j="+j);
            /*输出
            i=0,j=0
            i=1,j=2
            i=2,j=4
             */
        }
    }
}

1.2 while循环

 基本语法:

循环变量初始化;

while(循环条件){

  循环体(语句);

  循环变量迭代;

}

while循环也有四要素,只是四要素放的位置和for不一样

while循环执行流程分析

public class While01 {
    public static void main(String[] args) {
        //打印1-100之间所有能被3整除的数
        int i=1;
        int endNum=100;
        while (i<=endNum){
            if (i%3==0){
                System.out.print(i+"\t");
            }
            i++;
        }
    }
}

1.3 do...while循环

基本语法:

循环变量初始化;

do{

  循环体(语句);

  循环变量迭代;

}while(循环条件);

说明:

  • do...while也有循环四要素,只是位置不一样
  • 先执行,再判断,也就是说,一定会至少执行一次
  • 最后有一个分号;

do...while流程分析

 

 1 public class DoWhile01 {
 2     public static void main(String[] args) {
 3         //统计1-200之间能被5整除但不能被3整除的数的个数
 4         int i=1;
 5         int endNum=200;
 6         int count=0;
 7         do{
 8             if(i%5==0 && i%3!=0){
 9                 count++;
10             }
11             i++;
12         }while (i<=endNum);
13         System.out.println("1-200之间能被5整除但不能被3整除的数的个数:"+count);
14     }
15 }

1.4 多重循环(难点,重点)

1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中for,while,do...while均可作为外层循环和内存循环

【建议一般使用两层,最多不要超过三层,否则,代码可读性很差】

2)实际上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环

才可以结束外层循环的当次循环,开始下一次的循环

3)设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次

for(int i=1;i<=7;i++){//第一层循环7
    for(int j=1;j<=2;j++){//第二层循环2
           System.out.println("您好...") //7*2=14
    }        
}

例子

 1 public class MulFor01 {
 2     public static void main(String[] args) {
 3         //统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分【学生成绩从键盘输入】
 4         //统计三个班及格人数,每个班有5名同学
 5         Scanner sc = new Scanner(System.in);
 6         double totalScore = 0;//所有班级学生的总分
 7         int passNum = 0;//及格人数
 8         int classNum = 3;//班级数
 9         int studentNum = 5;//学生人数
10         for (int i = 1; i <= classNum; i++) {//表示班级
11             double sum = 0;//一个班级的总分
12             for (int j = 1; j <= studentNum; j++) {//表示学生
13                 System.out.print("请输入第" + i + "个班的第" + j + "个学生的成绩:");
14                 double score = sc.nextDouble();
15                 if (score >= 60) {
16                     passNum++;
17                 }
18                 sum += score;
19             }
20             System.out.println("第" + i + "个班的平均分:" + sum / studentNum);
21             totalScore += sum;
22         }
23         System.out.println("所有班级平均分:" + totalScore / (classNum * studentNum));
24         System.out.println("及格人数:" + passNum);
25     }
26 }

 1.4.1 练习一:打印99乘法表

 1 public class MuFor02 {
 2     public static void main(String[] args) {
 3         //打印九九乘法表
 4         int num=11;
 5         for(int i=1;i<=num;i++){
 6             for(int j=1;j<=i;j++){
 7                 System.out.print(j+"*"+i+"="+i*j+"\t");
 8             }
 9             System.out.println();
10         }
11     }
12 }

 1.4.2 练习二:打印金字塔

 1 public class MulFor03 {
 2     public static void main(String[] args) {
 3         /**
 4          *     * 4-3=1
 5          *    *** 4-2=2
 6          *   ***** 4-1=3
 7          *  ******* 4-0=4
 8          */
 9         //打印等腰三角形
10         Scanner sc=new Scanner(System.in);
11         System.out.print("请输入要打印的三角形的行数:");
12         int line=sc.nextInt();
13 
14         for (int i = 1; i <=line; i++) {
15 
16             for (int j=1;j<=line-i;j++){
17                 System.out.print(" ");
18             }
19             for (int k=1;k<=2*i-1;k++){
20                 System.out.print("*");
21             }
22             System.out.println();
23         }
24     }
25 }

1.4.3 练习三:打印空心金字塔

 1 public class MulFor03 {
 2     public static void main(String[] args) {
 3         /**
 4          *     * 4-3=1
 5          *    *** 4-2=2
 6          *   ***** 4-1=3
 7          *  ******* 4-0=4
 8          */
 9         //打印等腰三角形
10         Scanner sc=new Scanner(System.in);
11         System.out.print("请输入要打印的三角形的行数:");
12         int line=sc.nextInt();
13 
14         for (int i = 1; i <=line; i++) {
15 
16             for (int j=1;j<=line-i;j++){
17                 System.out.print(" ");
18             }
19             for (int k=1;k<=2*i-1;k++){
20                 if(k==1||k==2*i-1 ||i==line) {
21                     System.out.print("*");
22                 }else {
23                     System.out.print(" ");
24                 }
25             }
26             System.out.println();
27         }
28     }
29 }

 

1.4.4 练习三:打印菱形

 1 public class MutFor04 {
 2     public static void main(String[] args) {
 3         /**
 4          * &&*&&
 5          * &***&
 6          * *****  *******
 7          * &***&   &*****  1 2*2-1=3
 8          * &&*&&    &&*** 2  2*1-1=1
 9          *        &&&*
10          */
11         //打印菱形
12         //打印等腰三角形
13         Scanner sc=new Scanner(System.in);
14         System.out.print("请输入要打印菱形的行数:");
15         int line=sc.nextInt();
16 
17         for (int i = 1; i <=line/2+1; i++) {
18 
19             for (int j=1;j<=(line/2+1)-i;j++){
20                 System.out.print(" ");
21             }
22             for (int k=1;k<=2*i-1;k++){
23                 System.out.print("*");
24             }
25             System.out.println();
26         }
27         for(int i=line/2;i>=1;i--){
28             for (int k=1;k<=(line/2+1)-i;k++){
29                 System.out.print(" ");
30             }
31             for (int j=2*i-1;j>=1;j--){
32                 System.out.print("*");
33             }
34             System.out.println();
35         }
36     }
37 }

1.4.5 练习四:打印空心菱形

 1 public class MutFor04 {
 2     public static void main(String[] args) {
 3         /**
 4          * &&*&&
 5          * &***&
 6          * *****  *******
 7          * &***&   &*****  1 2*2-1=3
 8          * &&*&&    &&*** 2  2*1-1=1
 9          *        &&&*
10          */
11         //打印菱形
12         //打印等腰三角形
13         Scanner sc=new Scanner(System.in);
14         System.out.print("请输入要打印菱形的行数:");
15         int line=sc.nextInt();
16 
17         for (int i = 1; i <=line/2+1; i++) {
18 
19             for (int j=1;j<=(line/2+1)-i;j++){
20                 System.out.print(" ");
21             }
22             for (int k=1;k<=2*i-1;k++){
23                 if(k==1||k==2*i-1 ||i==line) {
24                     System.out.print("*");
25                 }else {
26                     System.out.print(" ");
27                 }
28             }
29             System.out.println();
30         }
31         for(int i=line/2;i>=1;i--){
32             for (int k=1;k<=(line/2+1)-i;k++){
33                 System.out.print(" ");
34             }
35             for (int j=2*i-1;j>=1;j--){
36                 if(j==1||j==2*i-1 ||i==line) {
37                     System.out.print("*");
38                 }else {
39                     System.out.print(" ");
40                 }
41             }
42             System.out.println();
43         }
44     }
45 }

1.5 跳转控制语句

1.5.1 break

break语句用于终止某个语句块的执行,一般使用在switch或者循环钟

基本语法:

{

  ...

  break;

  ...

}

以while使用break为例,画出示意图

public class BreakDemo {
    public static void main(String[] args) {
        //1-100以内的数求和,求出当和第一次大于20的当前数
        int endNum=100;
        int sum=0;//累加和
        for(int i=1;i<=endNum;i++){
            sum+=i;
            if(sum>20){
                System.out.println("和第一次大于20的当前数:"+i);//6
                break;
            }
        }
    }
}

标签的使用:

public class Break02 {
    public static void main(String[] args) {
        //标签的使用

        lable1:
        for(int j=1;j<=5;j++){
            lable2:
            for (int i = 0; i < 10; i++) {
                if(i==2){
                    break lable1;
                }
                System.out.println("i="+i);
            }
        }
    }

}

 注意事项和细节说明:

  • break语句出现在多层嵌套的语句块钟时,可以通过标签知名要终止的是哪一层语句块
  • break语句可以指定退出哪层
  • lable1是标签,名字由程序员指定
  • break后指定到哪个label就退出到哪里
  • 实际开发中尽量不要使用标签
  • 如果没有指定标签,就默认退出最近的循环体

1.5.2 continue

1)continue语句用于结束本次循环,继续执行下一次循环

2)continue语句出现在多层嵌套循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用规则是一样的

基本语法:

{

...

continue;

...

}

以while使用continue为例,画出示意图

 

 1 public class Continue01 {
 2     public static void main(String[] args) {
 3         label1:
 4         for(int j=0;j<3;j++){
 5             label2:
 6             for(int i=0;i<10;i++){
 7                 if (i==3){
 8                     //continue;
 9                     //continue label2;
10                     continue label1;
11                 }
12                 System.out.println("i="+i);
13             }
14         }
15     }
16 }

1.5.3 return

return使用在方法,表示跳出所在的方法,在讲解方法的时候,会详细介绍,这里简单的提以下

如果return写在main方法,退出程序Return01.java

 1 public class Return01 {
 2     public static void main(String[] args) {
 3         for (int i = 1; i <=5 ; i++) {
 4             if(i==3){
 5                 System.out.println("您好呀"+i);
 6                 return;
 7             }
 8             System.out.println("i="+i);
 9         }
10         System.out.println("go on...");
11     }
12 }

标签:控制,Java,int,流程,System,while,循环,main,public
From: https://www.cnblogs.com/lgs-tech/p/17890734.html

相关文章

  • java获取字符串最后一个字符
    要获取字符串的最后一个字符,你可以使用以下方法之一:方法1:使用charAt()方法Stringstr="HelloWorld";charlastChar=str.charAt(str.length()-1);System.out.println("最后一个字符是:"+lastChar);方法2:使用substring()方法Stringstr="HelloWorld";StringlastC......
  • 报错:java.lang.IllegalArgumentException
    问题表象开发,测试环境运行正常的接口到现场报错,报错日志关键信息如下:java.lang.IllegalArgumentException:Invalidcharacterfoundintherequesttarget.ThevalidcharactersaredefinedinRFC7230andRFC3986。问题分析及原因由于代码在开发测试环境测试通过,判断大概......
  • JavaScript-history对象
    概述window.history属性指向History对象,它表示当前窗口的浏览历史。History对象保存了当前窗口访问过的所有页面网址。下面代码表示当前窗口一共访问过3个网址。window.history.length//3由于安全原因,浏览器不允许脚本读取这些地址,但是允许在地址之间导航。//后退到前一个网......
  • 不写javaType,能匹配上吗
    重新生成不写javaType,能匹配上吗不歇javaType,能匹配上吗xml复制代码<resultproperty="totalCubage"column="total_cubage"/><resultproperty="totalWeight"column="total_weight"/><resultproperty="totalQty&q......
  • 毕业设计-基于JAVA的机场航班起降与协调管理系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路 关注作......
  • javaScript/js 【call,apply,bind】
    在JavaScript中,call、apply和bind都是用于改变函数执行上下文(this的值)的方法。它们在不同的情境下有不同的用途。call方法:call方法允许你调用一个函数,并指定该函数内部的this值,以及将参数以单独的参数传递给函数。functiongreet(name){console.log(`Hello,${name}!Ia......
  • JAVA自定义对象序列化,自定义的控制每个字节的序列化情况
    在java中,正常来说序列化是可以直接继承Serializable,或使用类似于fastjson,protobuf等框架。但是这些框架对于二进制协议,自定义协议,私有协议方面却不太好使,私有协议大多还是按照字节的方式组织数据,对于java来说需要控制每个属性的序列化方式,所以这块主要还是以传统的方式,读字节......
  • Elasticsearch:一个强大的Java搜索引擎
    一、介绍Elasticsearch是一个基于ApacheLucene库的开源搜索引擎,它提供了一个分布式、多租户能力的全文搜索引擎,同时具有HTTP网络界面和无模式JSON文档。Elasticsearch是用Java开发的,它是一个可扩展的系统,可以很容易地通过插件来扩展其功能。二、特点全文搜索引擎:Elasticsearch使用......
  • Java IO流(上)
    JavaIO流一、基础知识IO流即存储和读取数据的解决方案。(一)File表示系统中的文件或者文件夹的路径获取文件信息(大小,文件名,修改时间)创建文件/文件夹删除文件/文件夹判断文件的类型注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。(二)IO流用于读写文件中的数据(可以读......
  • Java 时间相减
    题目描述你是个贪睡虫,有一天被老师逮个正着,这个老师很有意思,提出一个问题:“给定入睡时刻和起床时刻,计算一共睡了多长时间”,如果回答正确就可以免于处罚。入睡时刻和起床时刻都采用24小时制表示法(见备注),而且知道睡觉时间最少为1秒,最多为24小时。输入【输入格式】输入第一行描......