【JAVASE】顺序和选择结构 下

简介: 【JAVASE】顺序和选择结构

  • 悬垂 else 问题
 public static void main(String[] args) {
        int x = 10;
        int y = 10;
        if (x == 20)
            if (y == 10)
                System.out.println("aaa");
        else
            System.out.println("bbb");
}

🍤 运行结果:


d11b095d1f9352a72ce99ac2bf8a3da7_eab5ae9cfe4c48c089d55a8031e837fe.png


为什么什么都没有打印?


首先if / else 语句中可以不加大括号,当不加{}时,他只控制下面的一条语句,要控制多行,必须加上大括号。

其次就是 else 是和最接近的 if 匹配,并不是和谁对齐就与它匹配。


2.2 switch 语句

基本语法:


switch(表达式){
  case 常量值1:{
    语句1;
    [break;]
  }
  case 常量值2:{
    语句2;
    [break;]
  }
  ...
  default:{
    ...;//内容都不满足时执行语句
    [break;]
  }
}

执行流程:


  1. 先计算表达式的值
  2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
  3. 当表达式的值没有与所列项匹配时,执行default


实例:根据 day 的值输出星期


public static void main(String[] args) {
        int day = 6;
        switch(day) {
            case 1:
                System.out.println("星期一");
                break;//遇到break停止,跳出switch语句
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
            case 7:
                System.out.println("周末");
                break;
            default:
                System.out.println("输入有误");
                break;
        }
}

🍤 运行结果:


ca42a9d401ba957fa3271feb128ab064_bad1a55aa4454184abffc06b12a7b737.png


注:


  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:

基本类型:byte、char、short、int,不能是long、float、double、boolean类型;

引用类型:String常量串、枚举类型

  • break 不要遗漏,否则会失去 “多分支选择” 的效果
  • switch 不能表达复杂的条件
  • switch 虽然支持嵌套,但是很丑,一般不推荐,毕竟这是一个看脸的世界~

使用错误类型

public static void main(String[] args) {
        double num=1.0;
        switch(num) {
            case 1.0:
                System.out.println("hehe");
                break;
            case 2.0:
                System.out.println("haha");
                break;
        }
}

🍤 编译出错:


3c8670ca1fbe03ff2b635c906a6f887e_703baf91723942059c8d689118671654.png


遗漏break


public static void main(String[] args) {
        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                // break;
            case 2:
                System.out.println("星期二");
                break;
        }
}

🍤 运行结果:


228cbda1e1f07f546e47f0987ebcd4a7_db58d31674de4c398dc45d416f6e3091.png


不能表达复杂条件


// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 无法表示
if (num > 10 && num < 20) {
  System.out.println("hehe");
}

相关文章
【JAVASE】顺序和选择结构 上
【JAVASE】顺序和选择结构
|
机器学习/深度学习 Java C语言
【JAVASE】循环结构 中
【JAVASE】循环结构
|
3月前
|
Java
Java 流程控制15道练习题(选择&循环)
Java 流程控制15道练习题(选择&循环)
80 10
|
6月前
|
数据格式
Java_分支语句、循环语句
该文段介绍了编程中的分支语句和循环语句。`switch`语句用于根据不同的值执行相应的代码块,支持byte, short, char, int, 枚举和String类型。每个`case`后的值必须唯一,且可利用`default`处理未匹配的情况。`if`语句用于单个或多个条件判断,有单分支、双分支(含`else`)和多分支形式。`for`、`while`和`do...while`循环分别适用于已知和未知循环次数的场景,`do...while`的特点是至少执行一次。此外,还提到了死循环的概念和循环嵌套,以及`break`和`continue`这两个跳转控制语句的作用。
41 1
|
6月前
|
Java 测试技术
Java一分钟之-循环结构:for与while循环
【5月更文挑战第8天】本文探讨了Java中两种主要的循环结构——`for`和`while`循环。`for`循环适用于已知迭代次数的情况,常见问题包括无限循环、初始化错误和作用域混淆。`while`循环适用于循环次数未知但条件明确的情况,需注意更新条件、死循环初始化和逻辑错误。避免错误的策略包括明确循环目的、检查边界条件、管理迭代变量、进行代码审查和测试,以及使用增强型`for`循环。正确理解和使用这些循环能提升代码质量。
41 0
|
6月前
|
Java 测试技术 C语言
【JavaSE】逻辑控制:顺序、分支和循环结构
【JavaSE】逻辑控制:顺序、分支和循环结构
65 0
|
6月前
|
Java API
深入理解 Java 循环结构:while、do while、for 和 for-each 循环
循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。
135 1
|
算法 Java 开发者
【JavaSE专栏10】Java的顺序结构、选择结构和循环结构
【JavaSE专栏10】Java的顺序结构、选择结构和循环结构