Java流程控制——循环结构

循环结构

有些时候我们需要多次运行程序,但无法让程序一直运行,运行一遍,程序就停止了 。但是很多电脑网站始终都是全天一直无休止的在运行 ,所以说,按照我们“编程是为了解决人的问题”的这个思想我们需要一个结构,来完成这件事:于是就有了循环结构。顺序结构的程序只能被执行一次,想让相同的操作进行多次,就可以使用循环结构。

Java中主要有三种循环结构:

  • while 循环

  • do while 循环

  • for循环

  • 在 Java5 中引入了一种主要用于数组的增强型for循环

while 循环

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

whlie(布尔表达式){
	//循环类容  
}
  • 只要布尔表达式为true,循环就会一直进行下去
  • 我们大多数情况是会让循环停下来的,我们需要让一个表达式失效的方式来结束循环
  • 少部分情况我们需要循环一直进行,比如说服务器请求响应监听等
  • 循环条件一直为true就为了造成无限循环(死循环) 我们正常的业务编程中应该尽量避免死循环。会影响程序性能,或造成程序卡死崩溃。

⭐️ 练习:使用 while 循环 输出1~100

        //为了后面的表达式判断先要设定一个初始的值
        int i = 0;

        //表达式为 i<100 这样输出之后的结果只会是1~100,如果输出101(大于100的数),表达式为false,循环内代码将不再执行
        while (i < 100) {
            
            //自增运算(之前的笔记里有)
            ++i;

            //自增一次进行一次输出
            System.out.println(i);
        }

//运行结果:请自行敲完代码后查看哦

/*
再捋一遍
循环在刚刚开始的时候会计算一下i的值,如果值为真,就会去执行循环中的代码,后面的循环也都如此,先计算表达式,只要满足表达式都会执行,一旦表达式不满足了,就不再执行循环
*/

🌟 练习2:计算1+2+3……+99+100=?

        int i = 0;
        int sum = 0;

        while (i<=100)
        {
            sum=sum+i;
            i++;
        }
        System.out.println(sum);
 
//运行结果为:
5050

举个栗子🌰:

就像有些闹钟,每到规定的时间就会响。判断就是被指针指到哪个点它就会响,除非没有电池没有电了(也就是表达式不成立了)才不会响。不要想得多复杂,慢慢理解。

do while 循环:

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

  • do while 循环和 while 循环相似,不同的是 do while 循环无论对错 至少先会执行一次

do while 循环的结构如下:

do{
    //代码语句
}whlie(布尔表达式);
		
	  	int i = 0;
        int sum = 0;

        do {
            sum = sum + i;
            i++;
        } while (i<=100);
            System.out.println(sum);

//程序是从上到下的,进行到 do 先输出一遍{}中的内容,再通过判断表达式为true,进行while循环, 最后输出

//运行结果为:
5050
  • while和do while 的区别

    • while 先判断后执行,do while 是先执行后判断。

    • do while 总是保证 循环体会至少执行一次,这是它们的主要差别

		int a = 0;

		//使用while 循环
        while (a < 0) {
            System.out.println(a);
            a++;
        }

        //为了更直观的区别结果,输出分隔号将两个循环分开
        System.out.println("===========================");
		
		//使用do while 循环
        do {
            System.out.println(a);
            a++;
        } while (a < 0);

//运行结果为:
===========================
0
    
/*
发现了吧:这里的while循环没有任何输出,而do whil 循环,输出了一个0

仔细查看代码,while循环表达式中的,a<0才可以进行循环。但是第一行就有表示 a=0,而不是a<0,表达式为false,所以while 循环无法进行。而下do whil循环,我们也说到了。无论表达式是否为true,都会先进行一遍,然后再判断表达式是否可以循环

for 循环

  • for循环,虽然所有循环结构都可以使用where 或者是都表示,但 java 提供了另一种语句for循环,使一些循环结构变得更加简单

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

  • For循环执行的次数是在执行之前就确定的。

for 循环 的结构如下:

for(初始化;表达式;更新){
    //代码语句
}
		//初始化条件
        int a = 1;

        //条件判断
        while (a <= 100) {

            //循环体
            System.out.println(a);

            //迭代(每一次循环都会将a的值刷新,直到表达式为float)
            a += 2;//每次加2
        }
        System.out.println("while循环结束");


        //初始化、条件判断、迭代
        for (int i = 1; i <= 100; i++) {
            System.out.println(i);
        }
        System.out.println("for循环结束");

  • 关于for循环有以下几点说明:

    最先执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句,

    然后,检测布尔表达式的值,如果为true 循环被执行,如果为false 循环终止,开始执行循环体后面的语句,

    执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)

    再次检测布尔表达式。循环执行上面的过程

⭐️ 练习:计算0~100之间的奇数和偶数的和

        int oddSum = 0;
        int evenSum = 0;

        for (int i = 0; i < 100; i++) {

            //奇数
            //如果i除以2不等于0肯定就是奇数
            if (i % 2 != 0) {
                oddSum += i;

                //偶数
                //相反,可以被除以2等于0肯定就是偶数
            } else {
                evenSum += i;
            }
        }

        //输出奇数的和
        System.out.println("奇数的和:" + oddSum);

        //输出偶数的和2
        System.out.println("偶数的和:" + evenSum);

🌟 练习:使用where或for循环输出1~1000之间的能被5整除的数,并且每行输出三个

        for (int i = 0; i <= 1000; i++) {
            
            //计算:能被5整除的数
            if (i % 5 == 0) {
                System.out.print(i + "\t");
                
            }
            
            if (i % (5 * 3) == 0) {
                //换行
                System.out.println();
                
            }
        }

💫 练习:打印九九乘法表 ( 形式如下)

1 *1=1

1 *2=2 2 *2=4

1 *3=3 2 *3=6 3 *3=9

1 *4=4 2 *4=8 3 *4=12 4 *4=16

1 *5=5 2 *5=10 3 *5=15 4 *5=20 5 *5=20

1 *6=6 2 *6=12 3 *6=18 4 *6=24 5 *6=30 6 *6=30

1 *7=7 2 *7=14 3 *7=21 4 *7=24 5 *7=35 6 *7=42 7 *7=49

1 *8=8 2 *8=16 3 *8=24 4 *8=32 5 *8=40 6 *8=48 7 *8=56 8 *8=64

1 *9=9 2 *9=18 3 *9=27 4 *9=36 5 *9=45 6 *9=54 7 *9=63 8 *9=72 9 *9=81

        //首先要输出第一行:1*1=1···1*9=9
        //i要赋值1的初始值,应为我们是从1开始相乘

        for (int i = 1; i <= 9; i++) {            
            System.out.println(1 + "*" + i + "=" + (1 * i));
        }
		
//请动手写出以上代码后,运行查看结果
		//接着,我们将固定的1,用一个循环包起来

        for (int j = 1; j <= 9; j++) {
            
            for (int i = 1; i <= 9; i++) {
                System.out.println(1 + "*" + i + "=" + (1 * i));
            }
            
        }

//自行 运行查看结果

//运行之后可以看出,输出的数学乘法中,有重复的乘法
		//去掉重复,i<=j

		for (int j = 1; j <= 9; j++) {
            
            for (int i = 1; i <= j; i++) {
                System.out.println(1 + "*" + i + "=" + (j * i));
            }
            
        }

//自行 运行查看结果

//运行之后可以看出,输出的数学乘法会十分不美观
		//调整样式

		for (int j = 1; j <= 9; j++) {
            
            for (int i = 1; i <= j; i++) {
                System.out.print(1 + "*" + i + "=" + (j * i));
            }
           
            System.out.println();
        }

//自行 运行查看结果

增强for 循环

  • 这里先暂时做一个了解

  • JAVA5引入了一种主要用于数组和集合的增强型for循环

    JAVA增强for循环语法结构如下

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

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

		//练习代码,辅助理解	
		
		//定义一个数组
		int[] numders = {10, 20, 30, 40, 50};

		//遍历数组元素
        for (int x : numders) {
        //这里的 numders 每一项都赋值给了前面的 int x
            
            System.out.println(x);
        }

//运行结果为:
10
20
30
40
50
    	//上面的不懂也没关系,这里用另一种for循环表现一下这个概念(核心是一样的)

		//定义一个数组
		int[] numders = {10, 20, 30, 40, 50};

        for (int i = 0; i < 5; i++) {
            System.out.println(numders[i]);
            //[]表示,取numders中的第几个值:取第i个值。
            //i在循环中每次都会更新,就相当于是取1、2···(小于5的数)
        }

//运行结果为:
10
20
30
40
50
    
//建议回到上个代码再看看、理解理解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值