字符串切换声明

use*_*606 0 java string incompatibility switch-statement

我正在开发一个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;                        
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

Tha*_*vas 5

使用String的Switch case仅适用于Java7

或者,您可以使用枚举代替早于任何版本的版本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;
}
Run Code Online (Sandbox Code Playgroud)