2012-01-07 45 views
0

有什么不对这个代码
if(getResponseDataMap().containsKey("A"){ a.setText(getResponseDataMap().get("A").toString); }条件运算

转换这样的。

getResponseDataMap().containsKey("A")?a.setText(getResponseDataMap().get("A").toString()):""

其中getLocalRequestDataMap是一个HashMap。和的setText是Android的

功能它给编译时错误
多个标记在该行
- 类型不匹配:不能从字符串转换成 布尔
- 语法错误,插入“)”来完成表达
- 语法令牌错误“)”,删除此令牌

+0

确实把一个支架周围的状况操作去除编译错误? – 2012-01-07 08:34:06

+0

你能显示整个代码吗? – evilone 2012-01-07 08:34:25

+0

添加spaces.Maybe编译器认为,“A”,“?”:“”,是一个String – shift66 2012-01-07 08:34:33

回答

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") ? "" : ""; 
    } 
} 

我怀疑问题出在你还没有表现出一些代码。请给出更多的上下文 - 理想情况下,像我的一样简短但完整的程序,但它会显示错误。

编辑:既然你编辑的问题,你可能会得到不同的错误。条件运算符不是一个有效的独立语句,每个操作数都必须是非空表达式(还有一些其他注意事项)。因此,而不是这样的:

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 stateme nt或可能:

Object response = getResponseDataMap().get("A"); 
if (response != null) { 
    a.setText(response.toString()); 
} 
+0

请检查编辑的代码 – 2012-01-07 08:51:09

+0

@MohitSharma:编辑我的答案。说实话,你不清楚你想做什么。 – 2012-01-07 09:11:19

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")?"":""; 
    } 
+0

@strandjev:请检查编辑后的代码。 – 2012-01-07 08:50:46

+0

但是,你应该以某种方式使用三元运算符的结果。我不认为你可以用你尝试的方式使用它(尽管这可以在C++中工作) – 2012-01-07 08:55:04