使用三元运算符时出错
问题描述:
我正在用Eclipse Juno编写我的代码,我正在使用散列表来设置我的dataImportObject,具体取决于其中的条目。 谁能告诉我什么是错这个问题: ht
是我hashTable中与<String, Integer>
对它使用三元运算符时出错
(ht.containsKey("DEVICE_ADDRESS")) ?
dataImportObject.setDevice_Address(dataitems[ht.get("DEVICE_ADDRESS")]) :
dataImportObject.setDevice_Address("");
答
谁能告诉我什么是错这个
两件事情:
- 条件运算符不能单独用作语句,只能用作表达式
- 我承担这些
set
方法都返回void类型,所以他们不能在有条件的经营者显示为操作数
三个选项:
-
使用的
if
声明:if (ht.containsKey("DEVICE_ADDRESS")) { dataImportObject.setDevice_Address(dataitems[ht.get("DEVICE_ADDRESS")])); } else { dataImportObject.setDevice_Address(""); }
-
使用条件运算符里面的的
setDevice_Address
电话,或更清楚,事先:String address = ht.containsKey("DEVICE_ADDRESS") ? dataitems[ht.get("DEVICE_ADDRESS")] : ""; dataImportObject.setDevice_Address(address);
-
如果你知道你的哈希表将不会有任何空值,就可以避免双重查询:
Integer index = ht.get("DEVICE_ADDRESS"); String address = index == null ? "" : dataitems[index]; dataImportObject.setDevice_Address(address);
+0
非常好的回答:) – 2013-03-12 17:20:12
+1
是的,就是这样。似乎我误解了三元运算符......我只是想用它来缩短我的If语句,因为我需要其中的很多,但是由于我的set函数返回void,所以这不起作用...所以我将不得不使用数字2.非常感谢 – 2013-03-12 17:24:53
你得到了什么错误?在另一个说明中,考虑使用一个完整的'if-else'。三元代码难以阅读。 – 2013-03-12 17:16:41
发布错误,也许更多的上下文的代码。 – mjuarez 2013-03-12 17:17:00
欢迎来到Stack Overflow。你能给我们多一点继续吗?你期望发生什么? – Zutty 2013-03-12 17:17:00