此代码有什么问题if(getResponseDataMap().containsKey("A"){ a.setText(getResponseDataMap().get("A").toString);}
像这样转换。getResponseDataMap().containsKey("A")?a.setText(getResponseDataMap().get("A").toString()):""
其中getLocalRequestDataMap是HashMap。并且setText是android的功能
它给出了编译时错误
这行有多个标记
-类型不匹配:无法从字符串转换为
布尔值
-语法错误,插入“)”以完成表达式
-令牌“)”上的语法错误,请删除此令牌
最佳答案
就其本身而言,问题在于您给出的表达式不是语句。
但是,分配一个任务就可以了:
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());
}