【问题标题】:How to use String[] inputs in switch case in Android?如何在 Android 的 switch case 中使用 String[] 输入?
【发布时间】:2014-06-14 07:59:17
【问题描述】:

如何在switch case中使用字符串数组的输入?

String[] mon=new String[]{"January","February","March","April","May","June","July","August","September","October","November","December"};

switch (mon)
{
    case "January":
        m=1;
        break;
    case "February":
        m=1;
        break;                  
}

【问题讨论】:

  • 你不能在 switch 语句中使用数组。
  • 您所说的似乎不合逻辑。您用所有这些值初始化一个数组,然后“切换”它们? 并且你在“一月”“二月”都有相同的陈述??想想看……数组有所有这些值;那它在切换什么???
  • 如何检查 switch 中的数组对象?

标签: java switch-statement arrays


【解决方案1】:

Java(版本 7 之前)不支持 switch 情况下的字符串。但是您可以使用enum 来达到预期的效果。

private enum Mon {
   January,February,March,April,May,June,July,August,September,October,November,December
};

String value; // assume input
Mon mon = Mon.valueOf(value); // surround with try/catch

switch(mon) {
    case January:
        m=1;
        break;
    case February:
        m2;
        break;
    // etc...
}

更多信息请查看here

【讨论】:

  • 这里的 fruit 是什么 - switch(fruit)
  • 您可能写了一个很好的答案,但是fruit 变量来自哪里?
  • 有趣,我认为fruit 是故意分散注意力的。
  • @11684 我之前也遇到过类似的问题,我的代码中有水果,只是错字。
【解决方案2】:

从 JDK 7 开始,您可以在 switch 中使用 String。但不是字符串数组....

here's an example

在您的代码中,您试图将整个数组放入开关中。 试试这个:

String[] mon=new String[]{"January","February","March","April","May","June","July","August","September","October","November","December"};
String thisMonth = mon[5];
    switch (thisMonth)
    {
        case "January":
            m=1;
            break;
        case "February":
            m=2;
            break;
...
        case "June":
            m=6;
            break;
    }

【讨论】:

    【解决方案3】:

    您不能在 switch 语句中使用数组(Java 7 之前)。如果您使用 Java 6 进行 Android 开发,则也无法打开字符串。最好使用几个月的枚举,然后打开枚举。

    【讨论】:

    • 开关中的字符串直到 7 才出现,所以是的 any “Java”开发不能在此之前包含这些。这些都没有说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多