使用三元运算符时出错

时间:2013-03-12 17:15:43

标签: java eclipse

我正在用Eclipse Juno编写我的代码,我正在使用哈希表来设置我的dataImportObject,具体取决于其中的条目。 谁能告诉我这是错的: ht是我的hashTable,其中包含<String, Integer>

(ht.containsKey("DEVICE_ADDRESS")) ? 
    dataImportObject.setDevice_Address(dataitems[ht.get("DEVICE_ADDRESS")]) : 
    dataImportObject.setDevice_Address("");

2 个答案:

答案 0 :(得分:16)

  

有人可以告诉我这个错误吗

两件事:

  • 条件运算符不能单独用作语句,只能用作表达式
  • 我假设这些set方法具有void返回类型,因此它们不能在条件运算符中显示为操作数

三个选项:

  1. 使用if声明:

    if (ht.containsKey("DEVICE_ADDRESS")) {
         dataImportObject.setDevice_Address(dataitems[ht.get("DEVICE_ADDRESS")]));
    } else {
         dataImportObject.setDevice_Address("");
    }
    
  2. 事先使用条件运算符 setDevice_Address调用,甚至更清晰:

    String address = ht.containsKey("DEVICE_ADDRESS") 
        ? dataitems[ht.get("DEVICE_ADDRESS")] : "";
    dataImportObject.setDevice_Address(address);
    
  3. 如果您知道哈希表没有任何空值,则可以避免双重查找:

    Integer index = ht.get("DEVICE_ADDRESS");
    String address = index == null ? "" : dataitems[index];
    dataImportObject.setDevice_Address(address);
    

答案 1 :(得分:0)

您无法将三元条件的返回类型设置为void。

使用if else。

Possible duplicate