change your code to this and your problem is sorted
public Boolean prendiTessera(TipoTerreno tipo) {
boolean flag=true;
switch (tipo) {
case PIANURA: flag=tesserePianura != 4 ? true :false; break;
case CAMPAGNA: flag=tessereCampagna != 4 ? true : false;break;
case MONTAGNA: flag=tessereMontagna != 4 ? true : false;break;
case DESERTO: flag=tessereDeserto != 4 ? true : false;break;
case FIUME: flag=tessereFiume != 4 ? true : false;break;
case BOSCO: flag=tessereBosco != 4 ? true : false;break;
default: flag=false;
}
if (flag)
tessereMontagna++;
return flag;
}
Problem description:
tesserePianura != 4 ? tesserePianura++ : return false;
Your this line isn't a complete statement, that's why you were getting error. And your else part/last part is a complete statement which can't come in expression (i.e., ternary operator).
Moreover ternary operator are meant to produce some result that to be assigned to some variable directly or indirectly.
Let me explain this to you direct assignment
flag=tessereBosco != 4 ? true : false;
in this case value is directly assigned to variable flag
.
indirect assignment
System.out.println(tessereBosco != 4 ? true : false);
in this case assignment to function's ( i.e., println()
) variable will be made.