此代码有什么问题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());
}

10-05 23:03