java切换案例问题

时间:2011-06-21 08:16:18

标签: java

public String sizeOfSupermarket() {
    String size;
    switch (this.numberOfProducts) {
        case (this.numberOfProducts >  5000):
            size = "Large";
            break;
        case (this.numberOfProducts >  2000 && this.numberOfProducts < 5000):
            size = "Medium";
            break;
        case (this.numberOfProducts <  2000):
            size = "Small";
            break;
    }
    return size;
}

以上是错误的,如何在case语句中编写compare语句?

6 个答案:

答案 0 :(得分:1)

您不能在case语句中使用表达式。条件由switch语句计算,case语句检查结果是否匹配。

要执行您要执行的操作,您必须使用一系列ifelse if语句:

if(this.numberOfProducts > 5000) {
    size = "Large";  
}
else if(this.numberOfProducts > 2000 && this.numberOfProducts < 5000) {
    size = "Medium";
}
else {
   size = "Small";
}

答案 1 :(得分:1)

if (numberOfProducts >= 5000)
    size = "Large";
else if (numberOfProducts >= 2000)
    size = "Medium";
else
    size = "Small";

答案 2 :(得分:1)

您可以使用派生值,在这种情况下,请查看数千个。

public String sizeOfSupermarket() {
    switch (this.numberOfProducts/1000) {
        case 0: case 1: return "Small";
        case 2: case 3: case 4: return "Medium";
        default: return "Large";
    }
}

注意:您的代码中有一个错误,如果numberOfProducts正好是2000或5000,它将返回null(假设它已编译)

答案 3 :(得分:0)

您无法使用开关来测试布尔表达式。你需要使用if。 如果要检查变量是否具有某个特定值,则可以使用switch,即:

public String sizeOfSupermarket() {
String size;
switch (this.numberOfProducts) {
    case 5000:
        size = "Large";
        break;
    case 2000:
        size = "Medium";
        break;
    case 100):
        size = "Small";
        break;
    }
    return size;
}

答案 4 :(得分:0)

Java 1.6不支持条件切换语句,最好的办法是使用if then else控件结构

答案 5 :(得分:0)

没办法。根据定义,switch / case基于我所知道的所有类C语言中的枚举类型(int,boolean,long,enum)。

所以你必须在这里使用if / else结构:

public String sizeOfSupermarket() {
    String size;
        if (this.numberOfProducts >  5000) {
            size = "Large";
        } else if (this.numberOfProducts >  2000 && this.numberOfProducts < 5000) {
            size = "Medium";
        } else (this.numberOfProducts <  2000) {
            size = "Small";
        }
    return size;
}