簡體   English   中英

使用三元運算符時出錯

[英]Error while using ternary operator

我正在用Eclipse Juno編寫我的代碼,我正在使用哈希表來設置我的dataImportObject,具體取決於其中的條目。 任何人都可以告訴我這是錯的: ht是我的hashTable,其中包含<String, Integer>

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

有誰能告訴我這有什么不對

兩件事情:

  • 條件運算符不能單獨用作語句,僅作為表達式使用
  • 我假設這些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); 

您不能將三元條件的返回類型設置為void。

使用if else。

可能重復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM