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语句?
答案 0 :(得分:1)
您不能在case
语句中使用表达式。条件由switch
语句计算,case
语句检查结果是否匹配。
要执行您要执行的操作,您必须使用一系列if
和else 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;
}