2012-01-07 24 views
0

。 getLocalRequestDataMapはHashMapのある条件演算子

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

。そして、のsetTextそれは時間の誤差にコンパイルし、この行

複数のマーカー与えるアンドロイド

の関数である - 型の不一致: ブール
に文字列から変換することはできません - 構文エラーを挿入「)は、」式
を完了するために - トークン ")"のシンタックスエラー。このトークンを削除してください。

+0

コンパイルエラー削除し、条件操作の周りにブラケットを入れていますか? –

+0

コード全体を表示できますか? – evilone

+0

スペースを追加してください。コンパイラが "A"と思うかもしれませんか? "": ""は単一の文字列です – shift66

答えて

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()):"" 

私は容疑者したい:あなたの場合は、

一方
Object response = getResponseDataMap().get("A"); 
a.setText(response == null ? "" : response.toString()); 

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

はしかし、私は個人としてこれを書きます地図にキーが含まれているときにテキストを設定したい場合は、元のif statemeに戻ってください。 nt、またはおそらく:

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

pls編集したコードを確認してください –

+0

@MohitSharma:私の答えを編集しました。正直言って、あなたがやろうとしていることは不明です。 –

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:編集したコードを確認してください。 –

+0

もう一度、何らかの方法で三項演算子の結果を使うべきです。私はあなたがしようとしている方法でこれを使うことはできないと思います(これはC++でも動作します) –