3

我正在使用 Eclipse Juno 编写我的代码,并且我正在使用哈希表来设置我的 dataImportObject,具体取决于其中的条目。谁能告诉我这有什么问题: ht我的哈希表<String, Integer>中是否有对

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

2 回答 2

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);
    
于 2013-03-12T17:19:04.450 回答
0

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

使用 if else 。

可能重复

于 2013-03-12T17:20:04.853 回答