字符串切换声明

时间:2013-04-09 05:31:31

标签: java string switch-statement incompatibility

我正在开发一个Java类。我可以帮助您使用带有String数据类型的Switch语句。

这是我的代码:

    String testString = "Nut";
    switch (testString)
    {
        case "Nut":
            if(NutCount < NutMaxCount) 
                NutCount += 1;
            break;
        case "Caramel":
            if(CaramelCount < CaramelMaxCount)
                CaramelCount += 1;
            break; 
        case "Chocolate":
            if(ChocolateCount < ChocolateMaxCount)
                ChocolateCount += 1;
            break;
        case "Marzipan":
            if(MarzipanCount < MarzipanMaxCount)
                MarzipanCount += 1;
            break;                        
    }

这是我得到的错误:

不可比的类型 - 找到了java.lang.String但是期望的int。

3 个答案:

答案 0 :(得分:5)

使用String切换案例仅适用于Java7

或者,您可以使用enum代替 Java7

之前的任何版本
String testString = "Nut";
ValueEnum enumval = ValueEnum.fromString(testString);
switch (enumval) 
{
   case Nut:
            if(NutCount < NutMaxCount) 
                NutCount += 1;
            break;
   case Caramel:
            if(CaramelCount < CaramelMaxCount)
                CaramelCount += 1;
            break; 
   case Chocolate:
            if(ChocolateCount < ChocolateMaxCount)
                ChocolateCount += 1;
            break;
   case Marzipan:
            if(MarzipanCount < MarzipanMaxCount)
                MarzipanCount += 1;
            break;
}

答案 1 :(得分:1)

此链接将引导您进入Java 7: http://www.oracle.com/technetwork/java/javase/downloads/index.html

您将需要Java 7,因此您可以在switch语句中使用Strings

在IDE中创建新项目时(图中的ide是eclispse),请确保选择以1.7结尾的Java

enter image description here

只需将每个字符串对应一个int值。

答案 2 :(得分:1)

String type isn't allowed to use as switch condition before JDK7
所以请使用Integer variable代替。