switch条件语句规则

转载于:https://www.cnblogs.com/xunbu7/p/4051289.html

### 如何在 `switch` 语句中实现 `case` 匹配多个条件 #### 使用逗号分隔的方式(适用于 C/C++) 在某些编程言(如 C 和 C++),可以通过逗号操作符来为同一个 `case` 设置多个值。以下是具体用法: ```c #include <stdio.h> int main() { int day; printf("Input an integer between 1 and 7: "); scanf("%d", &day); switch (day) { case 1: case 2: case 3: printf("Weekdays\n"); break; case 4: case 5: printf("Midweek days\n"); break; case 6: case 7: printf("Weekend days\n"); break; default: printf("Invalid input\n"); } return 0; } ``` 此方法通过将多个可能的值放在同一 `case` 下,共享相同的处理逻辑[^3]。 --- #### 结合布尔表达式的模式匹配(Python 的 `match-case`) 对于支持更复杂模式匹配的言(如 Python 3.10 及以上版本),可以直接利用布尔表达式作为 `case` 条件的一部分。例如: ```python def get_day_type(day_number): match day_number: case n if n in [1, 2, 3]: return "Weekdays" case n if n in [4, 5]: return "Midweek days" case n if n in [6, 7]: return "Weekend days" case _: return "Invalid input" print(get_day_type(3)) # Output: Weekdays print(get_day_type(5)) # Output: Midweek days print(get_day_type(8)) # Output: Invalid input ``` 这种方法允许灵活定义复杂的匹配规则,而不仅限于单一数值比较[^1]。 --- #### Java 中的复合条件匹配(JDK 17+) Java 自 JDK 14 开始引入预览版的增强型 `switch` 表达式,并在 JDK 17 中正式稳定化。它支持基于类型的模式匹配以及组合条件判断。例如: ```java public class DayTypeExample { public static void main(String[] args) { Object input = 3; String result = switch (input) { case Integer i when i >= 1 && i <= 3 -> "Weekdays"; case Integer i when i == 4 || i == 5 -> "Midweek days"; case Integer i when i == 6 || i == 7 -> "Weekend days"; case null -> "Null value detected!"; default -> "Invalid input type or range."; }; System.out.println(result); } } ``` 这里展示了如何使用箭头函数 (`->`) 配合守卫子句 (`when`) 实现多条件匹配[^2]。 --- #### 总结 不同编程言提供了多种方式让开发者能够在单个 `case` 块下指定多个条件。传统言通常依赖显式枚举或者嵌套逻辑;现代高级特性则倾向于简化法并提高可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值