1

我是 Android Dev 的初学者。我刚刚在字符串上使用 switch case 语句遇到了这个问题:

String str = "Hello";
switch (str) {
    case "Hello":
       System.out.println("case 1");break;
    default:
       System.out.println("default");break;
}

日食日志:

Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted Home.java

所以我要去 Project properties --> Java Compiler 我将 JDK 设置为 1.7 并应用它。但是现在日食让我修复了第一个问题的属性......

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.

如何修复它以使用我的开关盒?

谢谢

4

4 回答 4

4

您需要在 switch 语句中传递数值或字符值。前任。

char str = 'A';
switch (str) {
    case 'A':
       System.out.println("case 1");break;
    default:
       System.out.println("default");break;
}
于 2013-07-19T13:01:20.407 回答
1

是的,带有类的 switch 语句String是在 Java 1.7 中引入的。但Android适用于1.6抱歉。检查文档以了解您可以使用哪些类型。我不知道这种情况,但Enumsswitch 语句效果很好

于 2013-07-19T13:03:59.247 回答
0

在 Eclipse 属性中将编译器版本降低到 1.6。Android 尚不支持所有 1.7。

在此处输入图像描述

于 2013-07-19T13:14:12.570 回答
0

要明确开关中的大小写,您可以使用枚举

public enum helloEnum {
    HELLO, HOLA, CIAO
}


public class EnumTest {
    helloEnum mHello;

    public EnumTest(helloEnum mHello) {
        this.mHello = mHello;
    }

    public void sayHello() {
        switch (mHello) {
            case HELLO:
                System.out.println("hello");
                break;

            case HOLA:
                System.out.println("hola");
                break;

            case CIAO
                System.out.println("ciao");
                break;

            default:
                System.out.println("hello");
                break;
        }
    }
}
于 2013-07-19T13:18:38.047 回答