【Java基本语法-流程控制】

流程控制的概念

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组
合成能完成一定功能的小逻辑模块。
> 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
①顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转
②分支结构
根据条件,选择性地执行某段代码。有if…else和switch-case两种分支语句。
③循环结构
根据循环条件,重复性的执行某段代码。有while、do…while、for三种循环语句。
☆注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

分支结构中的if-else

分支结构中的if-else(条件判断结构)

        第一种:
            if(条件表达式){
                执行表达式;
            }


        第二种:二选一
            if(条件表达式){
                执行表达式1;
            }else{
                执行表达式2;
            }


         第三种:n选一
            if(条件表达式1){
                执行表达式1;
            }else if(条件表达式2){
                执行表达式2;
            }else if(条件表达式3){
                执行表达式3;
            }.....
             .....
            else{
                执行表达式n;
            }
		//举例1:
        int hearBeats = 179;
        if (hearBeats < 60 || hearBeats > 100) {
            System.out.println("需要进一步检查");
        }
        System.out.println("检查结束");

        //举例2:
        int age = 23;
        if (age < 18) {
            System.out.println("你还可以看动画片");
        } else {
            System.out.println("你可以看成人电影了");
        }

        //举例3:
        if (age < 0) {
            System.out.println("您输入的数据非法");
        } else if (age < 18) {
            System.out.println("青少年时期");
        } else if (age < 35) {
            System.out.println("青壮年时期");
        } else if (age < 60) {
            System.out.println("中年时期");
        } else if (age < 120) {
            System.out.println("老年时期");
        } else {
            System.out.println("您是要成仙啊");
        }

☆注意:
1、else结构是可选的
2、针对于条件表达式:
>如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓
>如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
>如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面,否则范围小的就没机会执行了。

	   Scanner scan = new Scanner(System.in);

        System.out.println("请输入成绩:(0-100)");
        int score = scan.nextInt();
        if (score == 100) {
            System.out.println("奖励一辆BMW");
        } else if (score > 80) {
            System.out.println("奖励一台iphone");
        } else if (score >= 60) {
            System.out.println("奖励一个iPad");
        } else {                                  //这里的else结构也可以注释掉。
            System.out.println("什么也没有");
        }

        /*
        System.out.println("请输入成绩:(0-100)");
        int score = scan.nextInt();
        if(score == 100){
            System.out.println("奖励一辆BMW");
        }else if (score >= 60){                 //此时范围大的>=60在上面,范围小的>80在下面,导致程序运行到>=60后,判断成功,执行“奖励一个iPad”
                                                //就结束了if-else结构。而本应该奖励的iphone却没有了。
            System.out.println("奖励一个iPad");
        }else if(score > 80 ){
            System.out.println("奖励一台iphone");
        }else{                                  //这里的else结构也可以注释掉。
            System.out.println("什么也没有");
        }



        正确示范:
        System.out.println("请输入成绩:(0-100)");
        int score = scan.nextInt();
        if(score == 100){
            System.out.println("奖励一辆BMW");
        }else if(score > 80 && score <= 90 ){       //让条件表达式更严谨
            System.out.println("奖励一台iphone");
        }else if (score >= 60 && score <= 80){      //让条件表达式更严谨
            System.out.println("奖励一个iPad");
        }else{
            System.out.println("什么也没有");
        }

if-else结构可以互相嵌套使用
从小到大排列三个数字

 //☆注意,开发中什么情况都不要省略{},如果没有加{},可能导致if(){}变成一条语句,而else此时会跟最近的if形成结构!
        int x = 4;
        int y = 1;
        if (x > 2)       //if()没有加{},导致如果条件表达式不满足x>2,就不会执行else语句,
            // 并且此时else就近原则,和第二个if形成了if-else结构。
            if (y > 2)
                System.out.println(x + y);//条件表达式不满足y>2,执行了else语句。
            else
                System.out.println("x是" + x);//x是4

分支结构:switch-case

分支结构:switch-case结构

        结构:
        switch(表达式){
        case 常量1:
        语句1;
        // break;
        case 常量2:
        语句2;
        // break; … …
        case 常量N:
        语句N;
        // break;
        default:
        语句;
        // break;
        }

switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,
char,int,枚举 (jdk 5.0),String (jdk 7.0);
case子句中的值必须是常量,不能是变量名或不确定的表达式值;
同一个switch语句,所有case子句中的常量值互不相同;
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

if和switch语句很像,具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几
种类型。虽然两个语句都可以使用,建议使用switch语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
也就是说,使用switch-case的,都可以改写为if-else。反之不成立。

		int number = 1;
        switch (number) {
            case 0:
                System.out.println("zero");
            case 1:
                System.out.println("one");
            case 2:                             //表达式匹配到case 2:开始执行System.out.println("two");
                System.out.println("two");
            case 3:
                System.out.println("three");    //因为case 2:没有break,所以调用执行语句后,继续向下执行System.out.println("three");
            case 4:
                System.out.println("four");     //直到调用执行了System.out.println("four");碰到了break,才没有继续执行default中的执行语句
                break;                          //遇到了case 4:中的break;停止了继续向下执行。
            default:
                System.out.println("other");
        }
         /*
            如下两种编译不通过:
            情况一、
            boolean isHandsome = true;
            switch(isHandsome){                      //编译错误,不能用boolean类型的表达式
                case true:
                    System.out.println("我好帅啊");
                    break;
                case false:
                    System.out.println("我好帅啊");
                    break;
            }default:
                    System.out.println("输入有误");


            情况二、
                int age = 10;
                switch(age){
                    case age > 18:                  //case 只能使用常量,不能使用范围或变量名等
                    System.out.println("成年了");
                    break;
                }default:
                    System.out.println("未成年");

①根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。
当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
②break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出结构。
③switch结构中的表达式, 只能是如下6种数据类型之一:byte、short、char、int、枚举类型、String类型
④case之后只能声明常量,不能声明范围或变量名。
⑤break关键字是可选的。
⑥default:相当于if-else结构中的else。default结构是可选的,而且位置是灵活的。

循环结构

循环结构
>在某些条件满足的情况下,反复执行特定代码的功能
循环语句分类
>for 循环
>while 循环
>do-while 循环

        循环语句的四个组成部分
        >初始化部分(init_statement)
        >循环条件部分(test_exp)
        >循环体部分(body_statement)
        >迭代部分(alter_statement)

for循环

for循环结构的使用:
一、循环结构的4个要素
①初始化条件
②循环条件 —>是boolean类型
③循环体
④迭代条件
二、for循环的结构

            for(①;②;④){
                ③;
            }
            
            执行过程:①-②-③-④-②-③-④.....-②
 			//输出5次Hello world。
            System.out.println("Hello World");
            System.out.println("Hello World");
            System.out.println("Hello World");
            System.out.println("Hello World");
            System.out.println("Hello World");

            //用for循环来输出5次Hello World。
            for(int i = 0; i< 6 ; ++i){
                System.out.println("Hello World");
            }

            //练习:
            int num = 1;
            for(System.out.println('a');num<=3;System.out.println('c'),++num){
                System.out.println('b');
            }//输出结果为:a-b-c-b-c-b-c


            //遍历100里的所有偶数,输出他们的合和个数
            int sum = 0;
            int count = 0;
            for(int i=1;i<=100;++i){
                if(i%2 == 0){
                    System.out.println(i);
                    sum += i;
                    ++count;
                }
            }
            System.out.println(sum);
            System.out.println(count);

while循环

while循环结构的使用:

        一、循环结构的4个要素
            ①初始化条件
            ②循环条件 --->是boolean类型
            ③循环体
            ④迭代条件

        二、语法格式

            ①初始化部分
            while(②循环条件){
                ③循环体部分;
                ④迭代部分;
            }

            >执行过程:
            ①-②-③-④-②-③-④-②-③-④-...-②

            说明:
            >注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。
            >我们写程序要避免出现死循环。
            >for循环和while循环可以相互转换
                区别:for循环和while循环的初始条件部分的作用范围是不同的。
 			//遍历100以内的所有偶数
            int i =1;
            while(i<=100){
                if(i%2 == 0){
                    System.out.println(i);
                }
                ++i;
            }

do-while循环

do-while循环结构的使用

            一、循环结构的4个要素
            ①初始化条件
            ②循环条件 --->是boolean类型
            ③循环体
            ④迭代条件


            二、语法格式

            ①初始化部分
            do{
                ③循环体部分;
                ④迭代部分;

            }while(②循环条件);

            执行过程:
            ①-③-④-②-③-④-②-③-④-...②

            说明:
            1、do-while循环至少执行一次循环体
            2、开发中,使用for和while更多一些,较少使用do-while。
			//遍历100内的所有偶数,计算他们的和与个数。
                int j = 1;
                int sum1 = 0;
                int count1 = 0;

                do{
                    if(j%2== 0){
                        System.out.println(j);
                        sum1 += j;
                        ++count1;
                    }
                    ++j;
                }while(j<=100)  ;

                System.out.println(sum1);
                System.out.println(count1);

for和while的无限循环

        for和while的无限循环:

        说明
        1、不在循环条件部分限制次数的结构:for(;;){}、while(true){}
        2、结束循环的条件有几种方式?
            方式一:循环条件部分返回false。
            方式二:在循环体中,执行break。
 //例题:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

            Scanner scan2 = new Scanner(System.in);

            int positiveNumber = 0;//记录正数的个数
            int negativeNumber = 0;//记录负数的个数

            while(true){                        //无限循环条件
                int numm = scan2.nextInt();
                if(numm>0){                     //判断numm的正负情况
                    ++positiveNumber;
                }else if(numm<0){
                    ++negativeNumber;
                }else{
                    break;                      //一旦执行break,跳出循环
                }
            }

                System.out.println(positiveNumber);
                System.out.println(negativeNumber);

嵌套循环的使用

嵌套循环的使用
1、嵌套循环:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环
2、
外层循环:循环结构B
内存循环:循环结构A
3、
①内层循环结构遍历一遍,只相当于外层循环循环体执行一次
②假设外层循环需要执行m次,内层循环需要执行n次,此时内层循环的循环体一个执行了m*n次。

/*例题:

            打印一个
             ******
             ******
             ******
             ******
            */

        for (int i1 = 0; i1 <=3 ; i1++) {
            for (int j1 = 0; j1 <=5 ; j1++) {
                System.out.print('*');
            }
            System.out.print('\n');

        }

            /*例题:

            打印一个
                 *
                * *
               * * *
              * * * *
             * * * * *
              * * * *
               * * *
                * *
                 *
            */

        for (int i1 = 1; i1 <=5 ; i1++) {
            for (int k = 1; k <=5-i1 ; k++) {
                System.out.print(' ');
            }
            for (int j1 = 1; j1 <= i1; j1++) {

                System.out.print('*');
                System.out.print(' ');
            }
            System.out.print('\n');

        }

        for (int i1 = 1; i1 <=4 ; i1++) {
            for (int k = 1; k <=i1 ; k++) {
                System.out.print(' ');
            }
            for (int j1 = 1; j1 <=5-i1 ; j1++) {

                System.out.print('*');
                System.out.print(' ');
            }
            System.out.print('\n');
        }

break和continue关键字的使用

break和continue关键字的使用

                    使用范围         循环中使用(不同点)         相同点

        break:      switch-case
                    循环结构中       结束当前循环       关键字后面不能声明执行语句
        continue:   循环结构中       结束当次循环       关键字后面不能声明执行语句
	for (int k = 1; k <=10 ; k++) {
            if(i%4==0){
                //break;  //123
                continue; //123567910
            }
            System.out.println(i);
        }

        //标签:

        label:for (int k = 1; k <4 ; k++) {     //label:是标签,可以自己取名,如:L: 、 ABC:等
            for (int l = 1; l <=10 ; l++) {
                if(l%4==0){
                    //break;//默认跳出包裹此关键字最近的一层循环。
                    //continue; 同理
                    //break label;//结束指定标识的一层循环结构,标识可以自己取名。
                    continue label;//结束指定标识的一层循环结构的当次循环,标识可以自己取名。
                }
                System.out.println(i);
            }

        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值