04、循环

01、循环概述及for循环的简单使用

        针对这种重复的动作问题,java就提供了一种语句:循环语句。

        一、循环语句

                循环体:要做的事情

                初始化条件:从哪里开始。

                判断条件:在什么情况下结束。

                控制条件:控制台初始化条件的变化


        注意:

                初始化条件一般定义一个变量。

                判断条件一般是一个关系表达式。

                循环体就是要做什么。

                控制条件就是控制变量的变化。        


        二、Java提供了三种循环:

                for     

                while

                do…while


        for : 格式

        for( 初始化表达式 ; 判断条件 ; 控制条件){

                执行语句;

        }

        

        执行流程:

        A:先执行初始化表达式。

        B:执行判断条件。

        C:根据判断条件的返回值

                如果true,执行循环体

                如果false,for循环结束

        D:执行控制条件,接着返回B。

02、用循环实现求1-10之和

        思路:

                A:首先要获得到1-10之间的每一个数据。用for循环可以实现。

                B:因为最终要一个和的结果。这个和在每一次循环的时候是变化的,所以要定义一个变量保存。在哪里定义这个变量呢 ?

                        1.在for循环里面定义,行不行?

                                a、如果在循环体上定义,肯定不行,这样的话每次循环都会重新定义一个变量。

                                b、如果在循环初始化条件表达式上定义,可以但在循环外边这个变量又不能被访问到。

                        2.通过考虑,放到外面定义。

public class SumFrom1To10 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum += i;
        }
        System.out.println("1 到 10 的和为:" + sum);
    }
}

 

03、定义变量的问题

        什么时候定义变量 ?

                当你知道这是一个变化的内容的时候。

        一般定义的范围:

                首先是在小范围内,如果不合理,在考虑大范围,

                两种情况

                        A:先在小范围内定义变量,然后在大范围内定义变量。可以因为小范围的代码执行完后,小范围内定义的变量会在内存中被释放掉。

                        B:先在大范围内定义变量,然后在小范围内定义变量。不可以,因为变量没有被释放掉。

04、while循环的概述和基本使用

        while循环格式:

                while(条件表达式){

                        循环体;

                }

        改进版格式:

                初始化条件;

                while(判断条件){

                        循环体;

                        控制条件;

                }


        一、while循环和for循环是可以等价转换的。区别:

                初始化条件的变量在for结束后,以后是不能使用的。而while结束后是可以使用的。

                如果这个变量仅仅是控制次数的,建议使用for循环因为这样,for结束,这个变量就结束,效率高。

        二、什么时候用for,什么时候用while ?

                如果是控制范围,最好用for。
                如果范围不明确,用while。

05、用while循环实现求1-100之和

        A:先用for循环来做

public class SumFrom1To100ForLoop {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println("1 到 100 的和为:" + sum);
    }
}

        B:然后用while循环来做

public class SumFrom1To100WhileLoop {
    public static void main(String[] args) {
        int sum = 0;
        int num = 1;
        while (num <= 100) {
            sum += num;
            num++;
        }
        System.out.println("1 到 100 的和为:" + sum);
    }
}

06、珠穆朗玛峰的问题

        珠穆朗玛峰高8848米,有张足够大的纸,他的厚度是0.01米折多少次后,可以折成珠穆朗玛峰的高度?(答案:20次。)

        思路:

                A:知道初始化条件是厚度0.01米,也就是1cm。最终条件是8848米,也就是884800cm。循环体的内容是厚度每次变为以前的2倍,判断条件是厚度有没有超多最大值。

                B:定义一个统计变量,用于记录次数每当判断条件成立,我就++。统计变量的初始化值为0.

                C:因为我不知道多少次,所以用while循环来做。

public class PaperFolding {
    public static void main(String[] args) {
        double paperThickness = 0.01;
        double everestHeight = 8848;
        int foldCount = 0;

        while (paperThickness < everestHeight) {
            paperThickness *= 2;
            foldCount++;
        }

        System.out.println("将纸折叠 " + foldCount + " 次后可以达到珠穆朗玛峰的高度。");
    }
}

07、do..while循环的概述和基本使用

        do..while循环的格式:

        do{

                循环体;

        }while(判断条件);

        do..while循环格式改进版:

        初始化条件;

        do{

                循环体;
                控制条件;

        }while(判断条件);

08、输出水仙花数

        求100-999之间的所有水仙花数

        什么是水仙花数 ?

                所谓的“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

                例如:153是一个水仙花数,因为:
                153=1*1*1+ 5*5*5 + 3*3*3;

public class NarcissisticNumbers {
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            int hundredsDigit = i / 100;
            int tensDigit = (i / 10) % 10;
            int onesDigit = i % 10;

            int sumOfCubes = (int) (Math.pow(hundredsDigit, 3) + Math.pow(tensDigit, 3) + Math.pow(onesDigit, 3));

            if (sumOfCubes == i) {
                System.out.println(i);
            }
        }
    }
}

09、循环的嵌套使用

        在控制台输出以下内容:
        ****

        ****

        ****

        输出语句:

                System.out.print();//不换行
                System.out.printIn0;//换行

        总结:外循环控制行数,内循环控制列数。

10、九九乘法表

public class MultiplicationTable {
    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 + "=" + i * j + "\t");
            }
            System.out.println();
        }
    }
}

11、break和continue的使用

        现在的循环都是从头干到尾,假如我想在输出一个数据后就立马结束,怎么办?

        break和continue : 终止或者中端循环的操作。

                break:结束当前循环;
                continue:结束本次循环进入下一次循环。


        注意:

                break和continue是在循环中使用的,一般是在循环中的判断中使用;

                break还可以用作switch语句的结束;

                break和continue在一个完整的操作中,一般位于最后。

12、使用标号的方式结束多层循环

        多层循环,怎么样才能实现,在内层循环中加一个break,从而实现结束整个循环?
针对这种需求,Java提供了一种方案,带标号的结束。

        首先,定义一个标号,接着,使用break或者continue结束到次标号即可

        格式:

        名字 : for(){}....

        在想要跳出的地方输入:break 名字; 就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值