黑马程序员技术交流社区

标题: 语法总结之循环 [打印本页]

作者: 高盖茨    时间: 2015-12-6 15:29
标题: 语法总结之循环
循环:
        for:
                格式:
                        for(初始化条件1; 判断条件2; 控制条件3) {
                                循环体4;
                        }
                执行流程:
                        第一次:先走1,再走2,看2的结果是true还是false,
                                        如果是true,执行4,完了以后执行3
                                        如果是false:循环结束。
                        第二次:2,4,3
                        。。。。。
                        最后一次:2
        while:
                格式:
                        初始化条件1;
                        while( 判断条件2 ) {
                               
                                循环体4;
                                控制条件3;
                        }
                练习题:
                        求1-100之间的和。

        do..while:
                格式:
                        初始化条件1;
                        do {
                               
                                循环体4;
                                控制条件3;
                        } while( 判断条件2 )
               
        三种循环之间的区别:
                for循环和其他两个循环的区别:
                        for循环(标准写法)执行结束后,初始化条件就不能用了。而其他两个循环可以。
                        实际开发中:能用for就用for,否则考虑使用while,do..while

                do..while循环和其他两个循环的区别:
                        do..while循环的循环体至少执行一次,而其他两个循环是先判断,然后决定是否执行。

        死循环:
                for(;;) {
               
                }

                while(true){
                }

        控制跳转语句:
                break;用于跳出循环,循环不在继续执行。 还可以用在switch语句中,用来终止swtich语句。
                continue:只能用于循环中,用来结束本次循环,进行下一次循环,循环还会接着执行。
                        A:for(int i=1; i<=10; i++) {
                                for(int j=1; j<=5; j++) {
                                        break A;
                                }
                               
                        }

                return:结束方法的。

        循环的嵌套:
                矩形星阵:        外循环控制的是行,内循环控制的是列。
                正三角形星阵: 和打印矩形相比,判断条件发生改变。
                倒三角形星阵: 和打印矩形相比,初始化条件发生改变。
                面试题:打印九九乘法表:

                转义符:
                        "\t"        tab键(水平制表符)
                        "\r"        回车
                        "\n"        换行
                        "\""        打印分号
                        "\'"        打印单引号
                        "\b"        回退
       
方法:
        概述:具有特定功能的代码块。
        作用:调高代码的复用性和编写效率。
        格式:
                修饰符        返回值的数据类型 方法名(数据类型 形参1,数据类型 形参2) {
                        方法体;
                        return 返回值;
                }
        定义一个方法的步骤:
                1、分析返回值的数据类型
                2、明确参数列表
        方法的调用:
                有具体返回值的方法的调用:
                        A:单独调用。 没有意义。
                        B:输出调用。 上课演示用
                        C:赋值调用。 推荐使用。

                没有明确返回值的方法的调用:
                        只能单独调用。
                        注意:
                                1、return可以省略,对结果没有影响,因为系统会默认加上。
                                2、只能单独调用。

                如果一个方法没有明确的返回值,返回值的数据类型可不可以不写?
                        不可以,必须写成void。(先这么记,不严谨,因为构造方法没有返回值类型)

               
               

        方法的注意事项:
                1、方法只有被调用才会执行。
                2、方法不能嵌套定义。
                3、多个形参之间用 逗号 隔开。
                4、调用用方法的时候,不用在传 具体的数据类型。
                5、如果方法有明确的返回值类型,那么,return必须带出一个值。

        1、需求:键盘录入两个数据,返回两个数中的较大值
        2、需求:键盘录入两个数据,比较两个数是否相等   

        方法重载:
                1、同一个类中。
                2、方法名相同。
                3、参数列表不同
                        A:个数不同。
                        B:对应的数据类型不同
                4、与返回值的数据类型无关。

                概述:在同一个类中,出现方法名相同,参数列表不同(个数不同,对应的类型)的两个或以上方法时,称为方法重载。

练习题:
        1、在控制台打印:1-10
        2、如果改成10-1,怎么打印?

        3、需求:求1-10之间数据之和。(累加)
                思路:
                        1、定义一个统计变量,用来记录和。
                        2、通过遍历,获取1-10之间的数字。
                        3、累加即可。
                        int sum = 0;
                        for(int i=1; i<=10; i++) {
                                //sum = sum + i;
                                sum+=i;
                        }

        4、思考:求1-100之间的偶数和,应该怎么做?
                int sum = 0;
                //第一种方式
                for(int i=1; i<=100; i++) {
                        if(i%2==0) {
                                sum+=i;
                        }
                       
                }
                //第二种方式
                for(int i=2; i<=100; i+=2) {
                        sum+=i;               
                }
        5、求1-100之间的奇数和,又应该怎么求呢?

        6、求10所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
                 举例:153就是一个水仙花数。
                         153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
                提示:
                        求个位: 除1,然后和10取余         153/1%10
                        求十位: 除10,然后和10取余         153/10%10
                        求百位:。。。。。。。。。
                        求万位:除以10000,然后和10取余         12345/10000%10
                代码:

        7、
                需求:请输出一个4行5列的星星(*)图案。   
                        *****
                        *****
                        *****
                        *****
                        for(int i=1; i<=4; i++) {
                                for(int j=1; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        }

                第一行: *****
                        for(int j=1; j<=5; j++) {
                                System.out.print("*");
                        }
                        System.out.println();
                第二行:*****
                        for(int j=1; j<=5; j++) {
                                System.out.print("*");
                        }
                        System.out.println();
                第三行:*****
                        for(int j=1; j<=5; j++) {
                                System.out.print("*");
                        }
                        System.out.println();
                第四行:*****
                        for(int j=1; j<=5; j++) {
                                System.out.print("*");
                        }
                        System.out.println();
               
                矩形星阵:        外循环控制的是行,内循环控制的是列。
                正三角形星阵: 和打印矩形相比,判断条件发生改变。
                倒三角形星阵: 和打印矩形相比,初始化条件发生改变。
                面试题:打印九九乘法表:
                        1*3=3 2*3=6 3*3=9
                        1*4=4 2*4=8
                        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();
                        }
               


                *
                **
                ***
                ****
                *****
                for(int i=1; i<=5; i++) {
                        for(int j=1; j<=i; j++) {
                                System.out.print("*");
                        }
                        System.out.println();
                }
                思路:
                        第一行:*
                                for(int j=1; j<=1; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第二行:**
                                for(int j=1; j<=2; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第三行:***
                                for(int j=1; j<=3; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第四行:****
                                for(int j=1; j<=4; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第五行:*****
                                for(int j=1; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();

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

                思路:
                        第一行:*****
                                for(int j=1; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第二行:****
                                for(int j=2; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第三行:***
                                for(int j=3; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第四行:**
                                for(int j=4; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();
                        第五行:*
                                for(int j=5; j<=5; j++) {
                                        System.out.print("*");
                                }
                                System.out.println();


作者: fenghun1991    时间: 2015-12-6 15:38
留名。。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2