Java学习-第五天

Java学习-第五天
今日学习共3节课
学习笔记梳理:

第三章:流程控制语句

第 1 阶段:Java 基本语法

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

程序设计中规定的三种流程结构,即:

顺序结构
• 程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构
• 根据条件,选择性地执行某段代码。
• 有 if…else 和 switch-case 两种分支语句。
循环结构
• 根据循环条件,重复性的执行某段代码。
• 有 for、while、do-while 三种循环语句(可理解为四种因为下面的foreach)
• 补充:JDK5.0 提供了 foreach 循环,方便的遍历集合、数组元素。(第 12 章集合中讲解)
  1. 顺序结构
    顺序结构就是程序从上到下逐行地执行。表达式语句都是顺序执行的。并且上一行对某个变量的修改对下一行会产生影响

2023-07-19T05:26:54.png

例如:

    int z1 = 2;
    System.out.println("今天是周 " + z1 + ",10 天以后是周" + (z1 + 3));

错误格式:

    System.out.println("今天是周 " + z1 + ",10 天以后是周" + (z1 + 3));
    int z1 = 2;
  1. 分支语句
    2.1 if-else 条件判断结构
    2.1.1 基本语法
    结构 1:单分支条件判断:if
    格式:

    if(条件表达式){
    语句块;

说明:条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或 布尔变量
执行流程:

  1. 首先判断条件表达式看其结果是 true 还是 false
  2. 如果是 true 就执行语句块
  3. 如果是 false 就不执行语句块
    2023-07-19T05:29:37.png

结构 2:双分支条件判断:if...else
格式:

if(条件表达式) {
语句块 1;
}else {
语句块 2;
}

执行流程:

  1. 首先判断条件表达式看其结果是 true 还是 false
  2. 如果是 true 就执行语句块 1
  3. 如果是 false 就执行语句块 2
    2023-07-19T05:30:22.png

结构 3:多分支条件判断:if...else if...else
格式:

if (条件表达式 1) {
语句块 1;
} else if (条件表达式 2) {
语句块 2;
}
...
}else if (条件表达式 n) {
语句块 n;
} else {
语句块 n+1;
}

说明:一旦条件表达式为 true,则进入执行相应的语句块。执行完对应的语句块之后,就跳出当前结构
执行流程:

  1. 首先判断关系表达式 1 看其结果是 true 还是 false
  2. 如果是 true 就执行语句块 1,然后结束当前多分支
  3. 如果是 false 就继续判断关系表达式 2 看其结果是 true 还是 false
  4. 如果是 true 就执行语句块 2,然后结束当前多分支
  5. 如果是 false 就继续判断关系表达式…看其结果是 true 还是 false

    n. 如果没有任何关系表达式为 true,就执行语句块 n+1,然后结束当前多分支
    2023-07-19T05:31:28.png

2.1.2 应用举例
案例 1:成年人心率的正常范围是每分钟 60-100 次。体检时,如果心率不在此范围内,则提示需要做进一步的检查

    int z1 = 88;
    if(z1 < 60 || z1 > 100){
        System.out.println("你需要做进一步的检查");
    }
    System.out.println("体检结束");

输出为:体检结束

案例 2:定义一个整数,判定是偶数还是奇数

    int a = 10;
    if(a % 2 == 0) {
        System.out.println(a + "是偶数");
    } else{
        System.out.println(a + "是奇数");
    }

输出为:10是偶数

案例 3:
岳小鹏参加 Java 考试,他和父亲岳不群达成承诺:
如果:
成绩为 100 分时,奖励一辆跑车;
成绩为(80,99]时,奖励一辆山地自行车;
当成绩为[60,80]时,奖励环球影城一日游;
其它时,胖揍一顿。
说明:默认成绩是在[0,100]范围内

    int z1 = 88;
    if (z1 == 100){
        System.out.println("奖励一辆跑车");
    }else if (z1 > 60 && z1 <=80){
        System.out.println("奖励一辆山地自行车");
    }else if (z1 > 80 && z1 < 99){
        System.out.println("奖励环球影城玩一日游");
    }else if (z1 < 60){
        System.out.println("胖揍一顿");
    }

88分输出为:奖励环球影城玩一日游

写法二:

int score = 88;
// 默认成绩范围为[0,100]
if(score == 100){
System.out.println("奖励一辆跑车");
}else if(score > 80){
System.out.println("奖励一辆山地自行车");
}else if(score >= 60){
System.out.println("奖励环球影城玩一日游");
}else{
System.out.println("胖揍一顿");
}

88分输出为:奖励环球影城玩一日游
2023-07-19T07:09:26.png

当条件表达式之间是“互斥”关系时(即彼此没有交集),条件判断语句及执行语句间顺序无所谓
当条件表达式之间是“包含”关系时,“小上大下 / 子上父下”,否则范围小的条件表达式将不可能被执行

2.1.3 if...else 嵌套
在 if 的语句块中,或者是在 else 语句块中,又包含了另外一个条件判断(可以是单分支、双分支、多分支),就构成了嵌套结构
执行的特点: (1)如果是嵌套在 if 语句块中的,只有当外部的 if 条件满足,才会去判断内部的条件
(2)如果是嵌套在 else 语句块中的,只有当外部的 if条件不满足,进入 else 后,才会去判断内部的条件

案例 4:由键盘输入三个整数分别存入变量 num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出

int num1 = 23, num2 = 32, num3 = 12;
    if (num1 >= num2) {
        if (num3 >= num1)
            System.out.println(num2 + "-" + num1 + "-" + num3);
        else if (num3 <= num2)
            System.out.println(num3 + "-" + num2 + "-" + num1);
        else
            System.out.println(num2 + "-" + num3 + "-" + num1);
    } else { //num1 < num2
        if (num3 >= num2) {
            System.out.println(num1 + "-" + num2 + "-" + num3);
        } else if (num3 <= num1) {
            System.out.println(num3 + "-" + num1 + "-" + num2);
        } else {
            System.out.println(num1 + "-" + num3 + "-" + num2);
        }
    }
语句块只有一条执行语句时,一对{}可以省略,但建议保留
当 if-else 结构是“多选一”时,最后的 else 是可选的,根据需要可以省略

练习1:

    int x = 4;
    int y = 1;
    if (x > 2) {
        //因为y!=2,如果是 false 就执行语句块2 所以输出atguigu
        if (y > 2)
            System.out.println(x + y);
        System.out.println("atguigu");
    } else
        System.out.println("x is " + x);

输出为:atguigu

练习2:

boolean b = true;
    //如果写成 if(b=false)能编译通过吗?如果能,结果是?
    //上面声明变量b = true,下面比较b是否等于false,所以输出b
    if(b == false) //建议:if(!b)
        System.out.println("a");
    else if(b)//这里的b意思是b == true
        System.out.println("b");
    else if(!b)//这里的!b意思是b != true
        System.out.println("c");
    else
        System.out.println("d");
    //如果将b == false 改成 b = false 则输出c
    if(b = false) //建议:if(!b)
        System.out.println("a");
    else if(b)
        System.out.println("b");
    else if(!b)
        System.out.println("c");
    else
        System.out.println("d");

输出为:b,c

练习 3:
定义两个整数,分别为 small 和 big,如果第一个整数 small 大于第二个整数
big,就交换。输出显示 small 和 big 变量的值

    int z = 10;
    int h = 9;
    if (z > h) {
        int o = z;
        z = h;
        h = o;
    }
    System.out.println("z=" + z + ",h=" + h);

输出为:z=9,h=10

练习 4:
小明参加期末 Java 考试,通过考试成绩,判断其 Java 等级,成绩范围
[0,100],90-100 优秀,80-89 好,70-79 良,60-69 及格,60 以下 不及格

    int z1 = 59;
    if (z1 == 100){
        System.out.println("100牛逼");
    } else if (z1 >= 90 && z1 <= 100) {
        System.out.println("90以上");
    } else if (z1 >= 80 && z1 <= 89) {
        System.out.println("80以上");
    } else if (z1 >= 70 && z1 <= 79) {
        System.out.println("70以上");
    } else if (z1 >= 60 && z1 <= 69) {
        System.out.println("60以上");
    } else if (z1 < 60) {
        System.out.println("60以下你完了");
    }

输出为:60以下你完了

另外一种写法(我没试过,直接从案例里复制来的):

if (score < 0 || score > 100) {
System.out.println("你的成绩是错误的");
} else 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("你的成绩属于不及格");
}

练习 5:
编写程序,声明 2 个 int 型变量并赋值。判断两数之和,如果大于等于 50,打印“hello world!”

    int z1 = 30;
    int z2 = 64;
    if (z1 + z2 >= 50) {
        System.out.println("hello world!");
    }

输出为:hello world!

练习 6:
编写程序,声明 2 个 double 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小
于 20.0,打印两数之和。否则,打印两数的乘积

    double d1 = 21.2,d2 = 12.3;

    if(d1 > 10.0 && d2 < 20.0){
        System.out.println("两数之和为:" + (d1 + d2));
    }else{
        System.out.println("两数乘积为:" + (d1 * d2));
    }

输出为:两数之和为:33.5

练习 7:判断水的温度
如果大于 95℃,则打印“开水”;
如果大于 70℃且小于等于 95℃,则打印“热水”;
如果大于 40℃且小于等于 70℃,则打印“温水”;
如果小于等于 40℃,则打印“凉水”

    int waterTemperature = 85;

    if(waterTemperature > 95){
        System.out.println("开水");
    }else if(waterTemperature > 70 && waterTemperature <= 95){
        System.out.println("热水");
    }else if(waterTemperature > 40 && waterTemperature <= 70){
        System.out.println("温水");
    }else{
        System.out.println("凉水");
    }

输出为:热水

今日学习到此为止

版权属于:张芷豪 本文链接:https://zzh.xn--fiqs8s/index.php/archives/74/ 转载申明:转载请保留本文转载地址,著作权归作者所有。

评论

等风等雨等你来
Title - Artist
0:00