有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java问号冒号开关盒

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报告以下错误(每行):

Syntax error on token "!=", invalid AssignmentOperator

Syntax error on token "return", delete this token

Type mismatch: cannot convert from boolean to 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;
        
}

共 (2) 个答案

  1. # 1 楼答案

    将您的代码更改为此,您的问题就会得到解决

    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;
    }
    

    问题描述:

    tesserePianura != 4 ? tesserePianura++ : return false;
    

    你的这一行不是完整的语句,这就是为什么你会出错。 您的else部分/最后一部分是一个完整的语句,不能用表达式表示(即三元运算符)

    此外,三元运算符意味着产生一些结果,这些结果将被直接分配给某个变量间接分配给某个变量

    让我给你解释一下 直接分配

    flag=tessereBosco != 4 ? true : false;
    

    在这种情况下,值直接分配给变量flag

    间接分配

    System.out.println(tessereBosco != 4 ? true : false);
    

    在这种情况下,将对函数的(即println())变量进行赋值

  2. # 2 楼答案

    这是使用三元运算符纠正此错误的最简单方法

    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);
    
    }