顺序结构,分支结构,循环结构

三种基本流程结构:

顺序结构

分支结构

循环结构

1,顺序结构:

顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。

public class Test{

    public static void main{

        System.out.println(1);

        System.out.println(2);

        System.out.println(3);
    }
}

2,分支结构:

分支结构又称为选择结构,根据条件,选择性地执行某段代码

2.1 if单分支语句

语法:

        if(条件表达式){

                 语句块;

}

条件表达式结果为boolean类型,当表达式结果为true,则执行语句块;否则什么都不执行

例:

public class Test{
    
    public static void main(String[] args){

        int a = 10;

        int b = 10;

        if(a > b){

            System.out.println("a大于b");
        }

        if(a == b){

            System.out.println("a等于b");
        }
    }
}

2.2 if 双分支语句

语法:

        if(条件表达式){

                语句块A;

}else{

                语句块B;

}

解释: 

        条件表达式结果为boolean类型,当表达式结果为true,则执行语句块A;否则执行语句块B

public class IfDemo{

    public static void main(String[] args){

        int a = 10;

        int b = 10;

        if(a == b){

            System.out.println("a 等于 b");
        }else{

            System.out.println("a 不等于 b");
    
        }

        System.out.println("...................");

        if(a> b){

            System.out.println("a 大于 b");
           
        }else{

            System.out.println("a 于不大 b");
        }

        System.out.println(".....................");

        }
}

2.3 if 多分支语句

语法:

         if(条件表达式A){

                语句块A;

}else if (条件表达式B){

                语句块B;

}else if (条件表达式C){

                语句块C;

}else if(条件表达式N){

                语句块N;

}else{

                语句块N+1;

}

解释: 

        所有的条件表达式结果都是boolean类型

        如果条件表达式A结果为true,则执行语句块A,否则去判断条件表达式B

        如果条件表达式B结果为true,则执行语句块B,否则去判断条件表达式C

        ....

        如果所以的条件表达式结果都为flase,则执行语句块N+1

例:

public class Test{

    public static void main(String[] args){

        int score = 70;

        if(score >= 90){

            System.out.println("优秀");
    
        }else if (score >=80 && score <= 89){

             System.out.println("良好");

        }else if(score >= 60 && score <= 79){

            System.out.println("中等");

        }else if(score < 6o){

            System.out.println("差");

        }else{

            System.out.println("");
        }
    }
}

2.4 嵌套if

为什么使用嵌套if?

问题:学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组

分析:

        要判断是否能够进决赛

        在确定进入决赛的情况下,还要判读是进入男子组还是女子组

解决:                

        使用嵌套if选择结构

public class Test{

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        int score = sc.nextInt();

        char gender = sc.next();

        if(score < 10){
    
            if(gender.equals("男")){

                System.out.println("进入男子组");

            }else if(gender.equals("女")){

                System.out.println("进入女子组");
            }

        }else{

            System.out.println("淘汰");
        }
    }
}

        为了使if结构更加清晰,避免执行错误,应该把每个if或else包含的代码块都用大括号括起来

        相匹配的一对if和else应该左对齐

        内层的if结构相对于外层的if结构要有一定的缩进;

2.5 switch语句

语法:

        switch(表达式){

                case值1:

                        语句块;

                        break;

                ...

               case值N:

                        语句块;

                        break;

                default:

                        语句块default;

}

解释:

        根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或switch-case结构末尾结束为止

        表达式在这里其实是一个值:但是必须是byte,short,int,char,枚举类型(JDK5.0新增),String(JDK7.0新增)其中的一种

        break 不是语法中固定的,可以加也可不加,但是如果为了打断switch的贯穿性,需要结合break使用

        default 块顺序可以变动,但是要注意其执行顺序。通常,default块放在末尾,也可以省略;但是如果default块放在前面,推荐添加break

        case 的顺序无所谓,case之后只能声明常量,不能声明范围        

        程序会使用表达值从上到下跟case后面的值进行比较,如果相等,则执行对应的语句块,否则继续向后对比:

        如果都不相等,则执行default

练习题:

对学生成绩大于60分的,输出“合格”。低
于60分的,输出“不合格”。
注:switch-case结构来实现;

public class Test{

    public static void main(String[] args){

        int score = 75;

        switch(score/10){

            case 1:
            case 2
            case 3:
            case 4:
            case 5:
                    
                    System.out.println("不合格");

            break;

            case 6:
            case 7:
            case 8:
            case 9:
            case 10:

                    System.out.println("合格");

            break;
                    
        }
    }
}

2.6 比较switch和多重if选择结构

相同点:

        都是用来处理多分支的结构

不同点:

        switch选择结构:只能处理等值条件判断的情况,而且条件必须是整形变量或字符型变量

        多重 if 选择结构:没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况

        if 在应用中更为常见,有时 switch 结构更清晰

        注:凡是可以使用switch-case 的结构,都可以使用if-case;反之不成立

3,循环结构

        在某些条件满足的情况下,反复执行特定代码的功能

        有 while ,do...while,for三种循环语句

        注:JDK1.5提供了 foreach循环,方便的遍历集合,数组元素

3.1循环分类

        顺序结构或分支结构的程序语句只能被执行一次。如果要同样的操作执行多次,就需要使用循环结构

循环语句分类

while循环

do-while循环

for循环

        单层循环

        双层循环

        增强for循环(foreach)

        嵌套循环

循环语句的四个组成部分

初始化部分

循环条件部分

循环体部分

迭代部分

3.2 while循环

语法:

        初始化部分

        while(循环条件部分){

                循环体部分;

                  迭代部分;

}

解释: 

        条件表达式返回值类型为boolean类型,只要条件表达式的结果为true,则一直执行语句块

特点:

        先判断,再执行

注:

        不要忘记声明 迭代部分。否则,循环将不能结束,变成死循环

        for循环和while循环可以相互转换,区别点:for循环和while循环的初始化变量作用域不同

public class Test{

    public static void main(String[] args){

        int sum = 0;

        int i = 0;

        while(i <= 10){

            sum += i;

            i ++;
        }

        System.out.println(sum);
    }
}

练习题:
问题:如何用程序描述下面这个故事呢?
为了帮助张浩尽快提高成绩,老师给他安排了每天的学习任务,
其中上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。
老师每天检查学习成果。如果不合格,则继续进行
分析:使用while循环的步骤
1、分析循环条件和循环操作
2、套用while语法写出代码
3、检查循环是否能够退出

public class Test{

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        System.out,println("及格了吗?(y/n):")

        String answer = sc.next();

        while(answer.equals("y" == flase)){

        System.out,println("上午阅读材料!");

        System.out,println("下午上机编程!");
        
        System.out,println("及格了吗?(y/n):");

        answer = sc.next;
    }
     System.out,println("完成学习任务!")
    }
}

3.3 do...while循环

语法:

 初始化部分;

do{

        循环部分

        迭代部分

}while(循环条件部分);

 解释:

        先执行do对应的语句块,然后再判断循环条件,只要循环条件满足,则一直执行循环体,否则结束循环

特点:

        先执行,再判断;do...while循环至少执行一次循环体

public class DoWhileLoop{

    public static void main(String[] args){

        int sum = 0;

        int i = 0;

        do{

            sum += i;

            i++;

        }while(i<= 10);

        System.out.println(sum);

    }
}

为什么需要do-while循环?
经过几天的学习,老师给张浩一道测试题,让他先上机编写程序完成,
然后老师检查是否合格。如果不合格,则继续编写。.…...

do{
    System.out.println("上机编写程序:");

    System.out.println("合格了吗?y/n"?);

    answer = sc.next();

    System.out.println(" ");

    }while(!"y".equals(answer));

System.out.println("恭喜你通过了测试!");

while 和 do-while的区别:

执行次序不同:

        while先判断,再执行;do-while 先执行,再判断

初始情况不满足循环条件时:

        while循环一次都不会执行

        do-while循环不管任何情况都至少执行一次

int number1 = 10;

while(number1 > 10){

    System.out.println("hello : while");

    number1--;

}

int number2 = 10;

do{

    System.out.println("hello: do-while");

    number2--;

}while(number2 > 10);

3.4 for循环

语法:

        for(初始化循环条件;循环条件表达式;迭代部分){

                循环操作;(循环体)

}

解释: 

        1,先执行初始化循环条件

        2,使用初始表达值进行条件判断,如果判断为true,则执行循环操作;否则结束循环

        3,进行迭代

        4,循环迭代可以在()里面省略,在循环体里面进行迭代也可

练习题:
循环输入某同学结业考试的5门课成绩,并计算平均分
1、分析循环条件和循环操作
2、套用for语法写出代码
3、检查循环是否能够退出
 

public class Test{

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        int sum = 0;

        int score;

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

            score = sc.nextInt(); 

            sum += score;

        }

        int average = sum / 5;

        System.out.println(average);

    }
}

三种循环对比:

执行顺序:

        先判断,后执行:while、for

        先执行,后判断:do-while

适用:

        循环次数确定:for

        循环次数不确定:while,do-while

3.5循环嵌套

        将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do...while都可以作为外层循环或内层循环

        实质上,嵌套循环就是把内部循环当成外层循环的循环体。当内层循环的循环条件为flase时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次循环

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

打印等腰三角形

/*

     *

    ***

   *****

  *******

 *********

*/

public class Text{

    public static void main(String[] args){

        for(int i = 1; i <= 5;i++){

            for(int j =5 ; j >= i ; j--){

                System.out.println(" ");

            }
            for(int k = 1; k <= i*2-1 ; k++){

                System.out.println("*");

            }

            System.out.println();

        }
    }
}

 总结规律:

        第一个(外层)for循环作用:控制行数

        第二个(内层)for循环作用:控制列数

4,流程跳转

break   结束所在循环     

        一是使switch语句中终止于某个case 二是使一个循环立即结束

continue   跳过本次循环,继续下一次循环

        在while或do-while循环中,会使流程跳转至条件表达式;

        在for语句中,continue语句会跳转至表达式2;

return   结束整个方法;

你可能感兴趣的:(java)