【发布时间】:2014-05-14 13:58:57
【问题描述】:
public Boolean prendiTessera(TipoTerreno tipo) {
switch(tipo){
case PIANURA: tesserePianura != 4 ? tesserePianura++ : return false;
case CAMPAGNA: tessereCampagna != 4 ? tessereCampagna++ : return false;
case MONTAGNA: tessereMontagna != 4 ? tessereMontagna++ : return false;
case DESERTO: tessereDeserto != 4 ? tessereDeserto++ : return false;
case FIUME: tessereFiume != 4 ? tessereFiume++ : return false;
case BOSCO: tessereBosco != 4 ? tessereBosco++ : return false;
default: return false;
}
return true;
}
Eclipse 报告以下错误(针对每一行):
令牌“!=”的语法错误,无效的AssignmentOperator
令牌“return”的语法错误,删除此令牌
类型不匹配:无法从 boolean 转换为 int
变量:
private int tesserePianura;
private int tessereCampagna;
private int tessereMontagna;
private int tessereDeserto;
private int tessereFiume;
private int tessereBosco;
枚举类:
public enum TipoTerreno {
/** terreno pianura. */
PIANURA,
/** terreno campagna. */
CAMPAGNA,
/** terreno montagna. */
MONTAGNA,
/** terreno deserto. */
DESERTO,
/** terreno fiume. */
FIUME,
/** terreno bosco. */
BOSCO,
/** terreno Sheepsburg. */
SHEEPSBURG;
}
【问题讨论】:
-
ternary operator不是一个语句(如 if/else),而是一个表达式。 -
@GriffeyDog,问题不在于三元运算符。表达式是,如果它出现在预期语句的位置。问题是“回归”。 'return' 是一个语句,但它出现在需要表达式的地方(即,作为三元组的第三个参数。
-
@jameslarge 表达式的计算结果为一个值。你是对的,
return是问题所在,因为它本身 is 是一个语句并且不会评估为三元运算符最后一部分所必需的值。
标签: java switch-statement conditional-operator