此代码有什么问题
if(getResponseDataMap().containsKey("A"){
a.setText(getResponseDataMap().get("A").toString);
}
像这样转换。
getResponseDataMap().containsKey("A")?a.setText(getResponseDataMap().get("A").toString()):""
其中getLocalRequestDataMap是HashMap。而setText是android的功能
它给编译时错误
此行的多个标记
- 类型不匹配:无法从String转换为
布尔
- 语法错误,插入“)”以完成表达式
- 令牌“)”上的语法错误,删除此令牌
答案 0 :(得分:4)
就其本身而言,问题是你给出了一个不是陈述的表达。
然而,通过作业,没关系:
import java.util.*;
public class Test {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
String x = map.containsKey("A") ? "" : "";
}
}
我怀疑问题出现在你没有展示的一些代码中。请提供更多背景信息 - 理想情况下是一个简短但完整的程序,例如我的,但它证明了错误。
编辑:既然你编辑了这个问题,你可能会得到一个不同的错误。条件运算符不是有效的独立语句,并且每个操作数都需要是非void表达式(还有一些其他注意事项)。所以不要这样:getResponseDataMap().containsKey("A") ?
a.setText(getResponseDataMap().get("A").toString()):""
我怀疑你想要:
a.setText(getResponseDataMap().containsKey("A") ?
getResponseDataMap().get("A").toString() : null);
但是,我个人会把它写成:
Object response = getResponseDataMap().get("A");
a.setText(response == null ? "" : response.toString());
另一方面,如果只想要在地图包含密钥时设置文本,那么您应该回到原来的if
语句,或者可能:
Object response = getResponseDataMap().get("A");
if (response != null) {
a.setText(response.toString());
}
答案 1 :(得分:1)
如果我对此表达式的结果不执行任何操作,则会出现相同的错误。这是一个例子:
String try() {
HashMap<String, String> getLocalRequestDataMap = new HashMap<String, String>();
getLocalRequestDataMap.containsKey("A")?"":"";
return "";
}
但如果您使用它,则没有错误:
String try() {
HashMap<String, String> getLocalRequestDataMap = new HashMap<String, String>();
return getLocalRequestDataMap.containsKey("A")?"":"";
}