C语言 case语句 连续值,对一个switch case语句使用两个值

小编典典

您可以使用具有以下两个CASE语句。

case text1:

case text4:{

//blah

break;

}

请参见此示例:该代码示例计算特定月份中的天数:

class SwitchDemo {

public static void main(String[] args) {

int month = 2;

int year = 2000;

int numDays = 0;

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

numDays = 31;

break;

case 4:

case 6:

case 9:

case 11:

numDays = 30;

break;

case 2:

if (((year % 4 == 0) &&

!(year % 100 == 0))

|| (year % 400 == 0))

numDays = 29;

else

numDays = 28;

break;

default:

System.out.println("Invalid month.");

break;

}

System.out.println("Number of Days = "

+ numDays);

}

}

这是代码的输出:

Number of Days = 29

贯穿:

另一个兴趣点是中断声明。每个break语句终止封闭的switch语句。控制流从切换块后的第一条语句继续。break语句是必需的,因为如果没有它们,则是switch块中的fall

through语句:匹配case标签之后的所有语句将按顺序执行,而不管后续case标签的表达式如何,直到遇到break语句为止。

示例代码:

public class SwitchFallThrough {

public static void main(String[] args) {

java.util.ArrayList futureMonths =

new java.util.ArrayList();

int month = 8;

switch (month) {

case 1: futureMonths.add("January");

case 2: futureMonths.add("February");

case 3: futureMonths.add("March");

case 4: futureMonths.add("April");

case 5: futureMonths.add("May");

case 6: futureMonths.add("June");

case 7: futureMonths.add("July");

case 8: futureMonths.add("August");

case 9: futureMonths.add("September");

case 10: futureMonths.add("October");

case 11: futureMonths.add("November");

case 12: futureMonths.add("December");

default: break;

}

if (futureMonths.isEmpty()) {

System.out.println("Invalid month number");

} else {

for (String monthName : futureMonths) {

System.out.println(monthName);

}

}

}

}

这是代码的输出:

August

September

October

November

December

在switch语句中使用字符串

在Java SE 7和更高版本中,可以在switch语句的表达式中使用String对象。以下代码示例,基于名为month的字符串的值显示月份数:

public class StringSwitchDemo {

public static int getMonthNumber(String month) {

int monthNumber = 0;

if (month == null) {

return monthNumber;

}

switch (month.toLowerCase()) {

case "january":

monthNumber = 1;

break;

case "february":

monthNumber = 2;

break;

case "march":

monthNumber = 3;

break;

case "april":

monthNumber = 4;

break;

case "may":

monthNumber = 5;

break;

case "june":

monthNumber = 6;

break;

case "july":

monthNumber = 7;

break;

case "august":

monthNumber = 8;

break;

case "september":

monthNumber = 9;

break;

case "october":

monthNumber = 10;

break;

case "november":

monthNumber = 11;

break;

case "december":

monthNumber = 12;

break;

default:

monthNumber = 0;

break;

}

return monthNumber;

}

public static void main(String[] args) {

String month = "August";

int returnedMonthNumber =

StringSwitchDemo.getMonthNumber(month);

if (returnedMonthNumber == 0) {

System.out.println("Invalid month");

} else {

System.out.println(returnedMonthNumber);

}

}

}

该代码的输出为8。

2020-09-11

C语言中,`switch` 语句用于根据某个表达式的执行不同的代码块。当你遇到多个`case` 块具有相同的条件时,可以使用`default` 或者共享代码块的方式处理这种情况。 1. **使用`break`**:通常情况下,每个`case` 后面都跟着`break`语句,用来退出当前的`switch` 语句。如果你发现多个`case` 的条件都匹配,但它们后面的代码是相同的,可以在最后一个匹配的`case` 后不加`break`。程序会按顺序执行到下一个`break`为止。这样做的前提是后续的`case` 没有被匹配。 ```c switch (expression) { case value1: // 共享代码 // ... break; // 如果这是最后一个匹配的,可以省略break case value2: // 共享代码 break; // 更多case... default: // 其他情况 break; } ``` 2. **使用`fallthrough`(C99以后)**:在C99及以上版本,引入了`fallthrough`关键字,允许程序从一个`case` 直接跳转到下一个`case`,即使没有`break`。这可以避免重复代码,但要注意控制好代码流程,因为这不是标准行为,可能会导致意外的结果。 ```c switch (expression) { case value1: // 共享代码 fallthrough; // 使用fallthrough关键字 case value2: // 共享代码 break; // 更多case... default: // 其他情况 break; } ``` 3. **共享代码块**:另一种方法是在`switch` 之外定义一个代码块,然后在所有匹配的`case` 下调用这个代码块。这需要对代码进行一些重构,确保每个`case` 的逻辑可以正确地调用这个共享部分。 ```c void shared_code() { // 共享代码 } switch (expression) { case value1: case value2: shared_code(); // 其他case...中的代码 break; // 更多case... default: shared_code(); // 其他情况 break; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值