4. 程序控制流(黑马java视频笔记)

1. 顺序结构

就是按照指令编写的顺序,一条一条执行,没有跳转,没有循环

2. 分支结构
2.1 if 分支结构
  • 单分支结构
    只有一个 if 条件表达式+执行语句
    Scanner scanner = new Scanner(System.in);  
    int score = scanner.nextInt(); 
    if(score >= 60){  
        System.out.println("及格");  
    }
    
  • if - else结构
    满足 if 条件语句→代码1,不满足(else)→代码2
    if(score >= 60){  
        System.out.println("及格");  
    }else{  //除去score>=60的情况
        System.out.println("不及格");  
    }
    
  • if - else if - else if - …else
    满足第i个条件→执行代码i,从上至下开始判断是否满足条件表达式
    if (score >= 90){  
        System.out.println("优秀");  
    }else if(score >= 80){  
        System.out.println("良好");  
    }else if(score >= 70){  
        System.out.println("中等");  
    }else if(score >= 60){  
        System.out.println("及格");  
    }else{  
        System.out.println("不及格");  
    }
    

🔺if (条件){ },“(条件)” 后不能跟" ; ",否则{ }中的代码将不受 if 的控制 (“ ; ” 表示一个程序语句的结束
🔺在多条件中,将较小范围的条件判断语句在前面(即最小的交集)。这是因为在 if-else if-else if…-else 语句中,是从上往下开始匹配,且匹配成功后,下面的其他条件就不再匹配了。
在这里插入图片描述

 橙色警告显示这两个条件永远都是false,那是因为如果第一个条件符合了,后面的else if判断语句就不会判断了,如果第一个条件不符合,那后面的也不符合,也是只执行else的代码块
2.2 switch分支结构
switch (表达式){  
    case 常量值1:  
        语句1;  
        break;  
    case 常量值2:  
        语句2;  
        break;  
    default:  
        语句3;  
        break;  
}
1)机制:
  • 比对值:
    通过与case后的值进行比对,来判断需要执行哪一段程序

  • break跳出:
    在与case后的值匹配成功后,如若需要跳出当前switch结构,则可以只用break语句

  • default默认板块:
    在与所有的case后的值匹配后,发现没有匹配上的,则执行default块的代码

    Scanner scanner = new Scanner(System.in);  
    int score = scanner.nextInt();  
    switch (score / 10){  
        case 10:  
        case 9:  
            System.out.println("优秀");  
            break;  
        case 8:  
            System.out.println("中等");  
            break;  
        case 7:  
            System.out.println("及格");  
            break;  
        default:  //类似于if语句中的else
            System.out.println("不及格");  
            break;  
    }
    //输入:87  输出:中等
    
2)相较于if判断语句的优点:

在值匹配时,switch语句对于各种可能的值采用类似树结构进行存储,能够直接匹配到相对应的值,不同于if语句中需要逐行进行判断

3)注意事项和穿透性的应用
  • 比对不支持小数(double、float、long),小数可以用if语句判断
  • case后的值不能重复,且只能是字面量,不能是变量
  • 正常使用switch的时候,记得写break,否则会出现穿透性:在匹配成功后,执行代码块,并接着执行下一个case语句的代码块
    switch (score / 10){  
        case 10:  
        case 9:  
            System.out.println("优秀");  
            break;  
        case 8:  
            System.out.println("中等");  
           case 7:  
            System.out.println("及格");  
            break;  
        default:  
            System.out.println("不及格");  
            break;  
    }
    // 输入:87  输出:中等 及格
    
3. 循环结构
3.1 for循环
for(初始化语句①;循环条件②;迭代语句③){
		循环体语句④(重复执行的语句)
}   

🔺① → ② → ④ → ③ → ② → ④ → ③ → ② → ④ → ③ …

  • 在初始化语句中定义循环变量时,要注意循环变量的作用域
    for (int i = 0; i < 8; i++) {  
        System.out.print(i+"\t");  
    }  
    //执行结果:0 1 2 3 4 5 6 7  
    //执行过程:  
    //i=0,0<8,true,打印0,i=1  
    //i=1,1<8,true,打印1,i=2
    
3.2 while循环
初始化语句;
while(循环条件){
		循环体语句(重复执行的语句)
		迭代语句;
}
  • 不知道循环次数时,可以用while循环
        //输入一个小于10的数字,利用计数的方式求10减去这个数。  
        Scanner scanner = new Scanner(System.in);  
        int num = scanner.nextInt();  
        int i = 0;  
        int temp = num;  
        while (temp < 10) {  
            temp++;  
            i++;//temp每加一次记一次数,直至与10相等  
        }  
        System.out.println("10 - " + num + " = " + i);  
    //输入:5  输出:10 - 5 = 5
    
3.3 do-while循环

先执行后判断,执行至少一次

初始化语句;
do{
	循环体语句;
	迭代语句;
}while(循环条件)
int i = 1;  
do {  
    System.out.println("你好!");  
    i++;  
} while (i <= 1);
//输出:你好!
while (i <= 1) {  
    System.out.println("你好!");  
    i++;  
}
//无输出
3.4 死循环

不进行干预就一直执行下去的循环

  • for死循环
    for(;;){  
        System.out.println("死循环");  
    }
    
  • while死循环
    while(true){  
        System.out.println("死循环");  
    }
    
  • do…while死循环
    do{  
        System.out.println("死循环");  
    }while(true);
    

🔺使用场景:如服务器一直监测状态

3.5 循环嵌套:打印九九乘法表

外部循环执行一次,内部循环执行一轮循环

  • 需求:打印出九九乘法表
3.5.1 思路分析:

1)在输出时,输出的内容默认是按照行来输出的,所以外层的for循环是对进行处理

  • 一共有9行,i=1→9

2)再看每一行的等式与行号的关系,即乘数=行号被乘数从1开始递增,直至等于乘数
在这里插入图片描述

3.5.2 代码
// 一共有9行,i=1→9
for (int i = 1; i <= 9; i++) {  
    // 被乘数从1开始递增,直至等于乘数  
    for (int j = 1; j <= i ; j++) {  
        System.out.print(i + "x" + j + "=" + i*j);  
        System.out.print('\t'); //通过制表符对齐输出点  
    }  
    System.out.println();  //循环一轮后 换行
}

在这里插入图片描述

3.6 break、continue
1)break

跳出并结束当前所在循环的执行,即这一轮循环都结束了

🔺break:只能用于结束所在循环,或者结束 所在switch分支的执行
🔺continue:只能在循环中进行使用

2)continue

跳出当前循环的当次执行,直接进入循环的下一次执行
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值