Java_基础语法05_流程控制:顺序结构、选择结构、循环结构

1.    顺序结构:从上往下,依次执行

2.    选择结构:按照不同的选择,执行不同的代码

  a)    if语句

    i.    格式(三种)

        if(布尔表达式){
            代码;
        }

        if(条件){
            代码;
        }else{
            代码;
        }

        if(条件){
            代码;
        }else if(条件){
            代码;
        } else if(条件){
            代码;
        }
        ……
        else{
            代码;
        }

    ii.    注意事项

      1)    if语句中条件的结果必须为boolean类型。

      2)    一个if语句中可以有0个或1个else语句。

      3)    else语句必须出现在if语句的最后。

      4)    一个if语句中可以有0个或多个else if语句。

      5)    当匹配到一个分支后,不再匹配其它的分支。

      6)    if的大括号可以省略,如果省略if的作用范围只有一行JAVA代码。

    iii.    三元运算符和if语句第二种格式的关系

      所有的三元运算符能够实现的,if语句的第二种格式都能实现。反之不成立,如果if语句第二种格式控制的语句体是输出语句,就不可以。因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。

  b)    switch语句

    i.    格式:

        switch(switch表达式){
        case 值1:
            语句(组)1;
            break;
        case 值2:      //case:后面的值就是要和表达式进行比较的值
            语句(组)2;
            break;
        ……
        default:      //如果所有的情况都不匹配,就执行这里,相当于if语句中的else
            语句(组)n+1;
            break;     //表示程序到这里中断,跳出switch语句
        }

    ii.    注意事项

      1)    switch语句中的表达式只能为byte,short,int,char。从JDK1.5开始可以使用枚举类型。从JDK1.7开始可以使用String。

      2)    case后面的值不能重复

      3)    case后面只能为常量或字面值

      4)    case后面可以为算术表达式。

      5)    当匹配到一个分支后,switch会从此分支开始自顶向下执行所有的分支,直到switch的结束或遇到第一个break为止。

      6)    default可以出现在switch语句中的任意位置。

      7)    无论default出现在哪,switch都会先匹配所有的case分支。如果没有匹配到任何case分支后,再执行default分支。

      8)    break可以省略,但是结果可能不是我们想要的。会出现一个现象:case穿透(如下示例)。建议不要省略

                switch (month) {
                case 1:
                case 2:
                case 12:
                    System.out.println("冬季");
                    break;
                case 3:
                case 4:
                case 5:
                    System.out.println("春季");
                    break;
                case 6:
                case 7:
                case 8:
                    System.out.println("夏季");
                    break;
                case 9:
                case 10:
                case 11:
                    System.out.println("秋季");
                    break;
                default:
                    System.out.println("你输入的月份有误");
                }

      9)    default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。

  c)    if语句和switch语句的区别?

    if语句:

      A:针对结果是boolean类型的判断

      B:针对一个范围的判断

      C:针对几个常量值的判断

    switch语句:

      针对几个常量值的判断

3.    循环结构:做一些重复的代码。while循环,do..while循环,for循环

  a)    while循环当不确定循环次数时,建议使用while循环。

    i.    格式:

        while(循环条件){
            //循环体
            语句(组);
        }

    ii.    注意事项

      1)    当循环条件返回true,执行循环。当循环条件返回false,结束循环。

      2)    循环条件的结果必须为boolean类型。

      3)    while:先判断,再循环。

  b)    do..while循环:

    i.    格式:

        do {
            //循环体
            语句(组);
        } while (循环条件);

    ii.    注意事项

      1)    大括号不能省略。

      2)    do..while:先循环,再判断。至少会循环一次。

  c)    for循环:当确定循环次数时,建议使用for循环。

    i.    格式:

        for(初始操作;循环条件;每次迭代后的操作){
            //循环体
            语句(组);
        }
        
        for ( int i = 1 ; i < 100 ; System.out.println(i), i++);    //该语句正确

    ii.    注意事项

      1)    for循环的三部分都可以省略。

      2)    Math.random():返回大于等于0.0,小于1.0的double类型的随机数。0.0---0.99999999999999999

      3)    for循环第一部分声明变量只能在for循环内使用。

      4)    for循环的第一部分可以同时声明多个类型相同的变量

    iii.    求出1-100之间偶数和

        // 方式1
        int sum2 = 0;
        for (int x = 1; x <= 100; x++) {
            if (x % 2 == 0) {
                sum2 += x;
            }
        }
        System.out.println(sum2); // 2550

        // 方式2
        int sum3 = 0;
        for (int x = 0; x <= 100; x += 2) {
            sum3 += x;
        }
        System.out.println(sum3); // 2550

    iv.    在控制台输出所有的"水仙花数";

      水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153

      这里以三位正整数为例:

        for (int x = 100; x < 1000; x++) {
            int ge = x % 10;
            int shi = x / 10 % 10;
            int bai = x / 10 / 10 % 10;
            // 让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较
            if (x == (ge * ge * ge + shi * shi * shi + bai * bai * bai)) {
                // 如果相同,就把该数据在控制台输出。
                System.out.println(x);
            }
        }

  d)    中断循环:

    i.    break(中断):只能出现在switch语句与循环语句中。出现在循环语句中的作用:立即结束所在循环

    ii.    continue(继续):只能出现在循环语句。作用:立即结束本次循环,使所在循环直接进入下一次循环

    iii.    return(返回):用于结束方法的(作用不是结束循环),一旦遇到return,程序就不会在继续往后执行。

  e)    for和while的区别

    i.    使用上的区别

      for语句的那个控制条件变量,在循环结束后不能在使用了。而while的可以继续使用。

    ii.    理解上的区别

      for适合于一个范围的判断,while适合次数不明确的。

  f)    嵌套循环

    i.    请输出一个4行5列的星星(*)图案

        // *****
        // *****
        // *****
        // *****
        for (int y = 0; y < 4; y++) {
            for (int x = 0; x < 5; x++) {
                System.out.print("*");
            }
            System.out.println();
        }

    ii.    请输出下列的形状

        // *
        // **
        // ***
        // ****
        // *****
        for (int x = 0; x < 5; x++) {
            for (int y = 0; y <= x; y++) {
                System.out.print("*");
            }
            System.out.println();
        }

    iii.    在控制台输出九九乘法表

        // 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*9=9 2*9=18 3*9=27 ...
        for (int x = 1; x <= 9; x++) {
            for (int y = 1; y <= x; y++) {
                System.out.print(y + "*" + x + "=" + y * x + "\t");
            }
            System.out.println();
        }
        // '\x' x表示任意,这种做法叫转移字符。
        //
        // '\t' tab键的位置
        //
        // '\r' 回车
        //
        // '\n' 换行

猜你喜欢

转载自www.cnblogs.com/zhaolanqi/p/9229316.html