Question

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 reports the following errors (for each line):

Syntax error on token "!=", invalid AssignmentOperator

Syntax error on token "return", delete this token

Type mismatch: cannot convert from boolean to int

Variables:

private int tesserePianura;

private int tessereCampagna;

private int tessereMontagna;

private int tessereDeserto;

private int tessereFiume;

private int tessereBosco;

Enum Class:

public enum TipoTerreno {

/** terreno pianura. */
PIANURA,

/** terreno campagna. */
CAMPAGNA,

/** terreno montagna. */
MONTAGNA,

/** terreno deserto. */
DESERTO,

/** terreno fiume. */
FIUME,

/** terreno bosco. */
BOSCO,

/** terreno Sheepsburg. */
SHEEPSBURG;
        
}
Was it helpful?

Solution

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.

OTHER TIPS

this is the simplest way to correct that using ternary operator

public Boolean prendiTessera(TipoTerreno tipo) {
    int test;

    switch(tipo){

        case PIANURA: test= ( tesserePianura != 4) ? tesserePianura++ : 0; break;

        case CAMPAGNA: test=( tessereCampagna != 4) ? tessereCampagna++ : 0;break;

        case MONTAGNA: test=  (tessereMontagna != 4) ? tessereMontagna++ : 0;break;

        case DESERTO: test= (tessereDeserto != 4) ? tessereDeserto++ :0;break;

        case FIUME: test= (tessereFiume != 4) ? tessereFiume++ : 0;break;

        case BOSCO:test=  (tessereBosco != 4) ? tessereBosco++ :0;break;

        default: test=0;  
    }

    return (test==1);

}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top