当前位置: 首页 > 面试题库 >

对一个switch case语句使用两个值

张通
2023-03-14
问题内容

在我的代码中,该程序根据用户输入的文本执行某些操作。我的代码如下:

switch (name) {
        case text1: {
            //blah
            break;
        }
        case text2: {
            //blah
            break;
        }
        case text3: {
            //blah
            break;
        }
        case text4: {
            //blah
            break;
        }

但是,案例text1和内部的代码text4是相同的。因此,我想知道我是否有可能实施类似

case text1||text4: {
            //blah
            break;
        }

我知道||运算符在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<String> futureMonths =
            new java.util.ArrayList<String>();

        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语句的表达式中使用Stringhtml" target="_blank">对象。以下代码示例,基于名为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。

从Java文档



 类似资料:
  • 问题内容: 我基本上有两个名为和的表。该表具有以下字段: 是表中字段的外键,其中包含以下字段: 我正在运行这样的查询: 除其他事项外,这将返回用户的。但是我想返回用户的用户名,而不是他们的u_id。因此,基本上,在该SELECT语句中,我还想运行: 我可以为此使用两个查询,但是我试图减少我的应用程序运行的查询,而且我知道有一种方法可以将其组合成一个查询,但是我只是不知道:< 有人知道答案吗?谢谢!

  • 我有2个mysql语句,其中一个从4个链接表中获取所有信息,供员工使用。我正在尝试为另一个表中的每个staff member获取标题,但我无法将其添加到1语句中,因为它与所选的主表无关。我已经尝试了mysql语句的20个变体,但都没有成功。我确实让它通过第二条语句中的一个变量拉出标题并输出它,但它给每个语句都赋予了相同的标题,当它再次循环时似乎并没有更新变量。 第一条mysql语句读到(简化版很长

  • 我只允许在我的主菜单中有4个选项,我创建了5个。我不知道如何把最后2个输出语句放在一起,这样一个语句就可以从另一个语句的内部调用。因此它们可以使用相同的菜单选项。 选项3和选项4需要以某种方式在彼此内部,这样我就可以显示输入的所有联系人的名称,然后提示用户选择联系人ID,以显示该联系人的其余详细信息。 以下是更改前的输出结果和更改后的输出结果。 这是我之前的改变,这是好的,除了我在主菜单中有太多的

  • 问题内容: 我想一次更新两个表。下面的代码似乎工作正常。但是,在某些情况下,bidGroups中没有条目,这意味着整个语句将失败。我如何调整它,以便它更新第一位(watchedItems),并且如果watchedItems.bidGroupID为NULL则不尝试第二部分 我试过了,但是语法是错误的。 问题答案: 以这种方式尝试LEFT JOIN: ......

  • 所以我的PHP代码遇到了问题,我试图运行两个准备好的语句,这两个语句都是用相同的$mysqli对象“prepared”的。 我可能错过了什么;你能同时运行两个吗?如有任何帮助,我们将不胜感激!如有任何问题,请询问;)

  • 我有以下表格: http://www.gulllakeschools.net/mysqltables.pdf 我需要以以下格式提取数据:学生姓、学生名、日期事件、日期事件(学生登录的每一天都有一个日期事件) 组件com_users是我需要从组件列中提取的组件。 我是mysql的菜鸟,不知道如何一次完成。我有这些单独运行良好的精选语句: 但我不能为我的生活让他们加入。我尝试过加入,加入,完全加入,合