当前位置: 首页 > 知识库问答 >
问题:

问号冒号开关案例

王英彦
2023-03-14
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”出现语法错误,请删除此令牌

类型不匹配:无法从布尔值转换为int值

变量:

特塞雷皮亚努拉私人酒店;

私人信息;

私人信息;

特塞雷德斯托一等兵;

私人int tessereFiume;

特塞雷博斯科私人酒店;

枚举类:

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个答案

祁彬
2023-03-14

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

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

}
百里杰
2023-03-14

把你的代码改成这个,你的问题就解决了

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;

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

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

让我给你解释一下这个直接任务

flag=tessereBosco != 4 ? true : false;

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

间接转让

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

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

 类似资料:
  • 问题内容: 我碰到了以下内容 在这种情况下,和是什么意思? 问题答案: 它称为条件运算符(是三元运算符)。 它有以下形式:?: 认为“ then”和“ else”。 您的代码等同于

  • 主要内容:示例冒号()是MATLAB中最有用的操作符之一。它用于创建向量,下标数组,并为迭代指定。 如果要创建一个包含从到的整数的行向量,则书写为 - MATLAB执行语句并返回一个包含整数的行向量,从到 - 如果要指定一个增量值,例如 - MATLAB执行语句并返回以下结果 - 再来看看一个例子 - MATLAB执行语句并返回以下结果 - 可以使用冒号运算符创建索引向量,以选择数组的行,列或元素。 下表描述了

  • 问题内容: 我正在尝试使用Go(不在GAE上)为Bitcoin调用HTTP JSON-RPC服务器,但是出现错误 要么 我尝试了各种网络配置,但无济于事。当我在浏览器中键入地址时,服务器收到了响应: 对于空电话,这看起来像是正确的响应。 如何在Go中正确调用该HTTP JSON-RPC服务器? 问题答案: 在主机周围使用方括号,如下所示: 参考: http://golang.org/src/pkg

  • 冒号:是MATLAB里面一个十分重要的算子,适用于各种不同的表达式。 例如表达式   1:10 表示一行从1到10的整数 1 2 3 4 5 6 7 8 9 10 为了改变递变的间隔,可以指定一个间隔长度 ,例如   100:-7:50 表示为 100 93 86 79 72 65

  • 问题内容: 问号和冒号是什么意思? 谢谢 问题答案: 这是PHP 三元运算符(也称为条件运算符)-如果第一个操作数的值为true,则计算为第二个操作数,否则为第三个操作数。 将其视为可以在表达式中使用的“ if”语句。在根据某些条件进行简洁的分配时可能非常有用,例如 还有一个简写版本(从PHP 5.3开始)。您可以省略中间操作数。如果为真,则运算符将作为第一个操作数,否则为第三个操作数。例如: 值

  • 我想使用此模式创建一个数据帧: 代码: 但是有一些。显示抛出: 错误执行器:阶段0.0(TID 0)java中任务0.0中出现异常。lang.RuntimeException:编码时出错:java。lang.RuntimeException:scala。收集不可变$冒号$冒号不是结构架构的有效外部类型 编辑: 513和549应该是子列名而不是值。这是我期望的输出示例: