【问题标题】:Switch statement of string字符串的switch语句
【发布时间】:2013-12-29 20:05:55
【问题描述】:

我正在尝试在 Android 应用程序中使用 switch 语句。这个switch 语句正在测试String 的值,然后根据该值更改另一个字符串的值。

字符串 s1 = "a" 然后 字符串 s2 = "1"

我不断收到一条错误消息,提示我需要将合规性更改为 1.7。完成此操作后,我收到一条错误消息,提示我需要将合规性更改为 1.6。

有没有办法解决这个问题?或者任何人都可以想到解决这个问题?

【问题讨论】:

标签: java android switch-statement


【解决方案1】:

Java 在早期的 java 7 中不支持 switch/case 中的字符串。但是如果您使用 java 6,则可以通过使用枚举来实现所需的结果。

private enum Fruit {
apple, carrot, mango, orange;
}

String value; // assume input
Fruit fruit = Fruit.valueOf(value); // surround with try/catch

switch(fruit) {
    case apple:
        method1;
        break;
    case carrot:
        method2;
        break;
    // etc...
}

【讨论】:

  • 枚举常量应该大写,因为它们本质上是public static final 字段。
  • 你是对的,但我没有说如何编程,我给出了如何解决这个问题的想法
  • 看看我的问题是否对你有帮助
  • 虽然我没有使用这种方法,但它确实开始思考:因为我只寻找用户输入的一个字母(我只使用字符串,因为我发现它更容易)我可以将字母转换为它的 ASCII 值并以此为基础我的 switch 语句。
  • @Just_Some_Guy 为什么不使用char 本身?
【解决方案2】:

使用字符串比较 equals() 而不是打开字符串(在 Java 7 中可用)可能如下所示:

//as an example, if s2 equals 'b'
String s2 = "b";

//this uses String's equals() method
if (s1.equals("a")) then {
    s2 = "1";
}
else if (s1.equals("b")) then {
    s2 = "2";
}
else {
    s2 = "3";
} 

当然,根据您的需要调整条件。

【讨论】:

  • 谢谢!下次有机会我会试试这个。
【解决方案3】:

不要使用 switch case,而是使用 if-else 和字符串 equals() 方法。它将有助于代码兼容性,因为字符串切换仅适用于 jdk 1.7+。

【讨论】:

  • 这也让我在使用字符串时很头疼,虽然我不确定“字符串等于方法()”是什么意思。你能举个简单的例子吗?
  • 抱歉,我还是个新手。
【解决方案4】:

如果是 maven 项目,您需要在 pom.xml 中添加以下代码。

  <properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
  </properties>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多