2017-10-25 10 views
-1

私のコードは、char配列(char [] charArray)を反復し、そのキーを探します。キーを使用して、マップ内の値を検索します。しかし、map.get()関数は、私が値として設定したと思っても私にnullを与えています、なぜ私は確信していません。ありがとう!なぜmap.get()関数はnullですか?

parameters for this method are: 
    LinkedBinaryTree<String> and HashMap<String, Integer> 

    for (int i = 0; i < charArray.length; i++) { 
     if (Character.isLetter(charArray[i])) { 
      // Why is map.get(charArray[i]) null?? 
      String char2String = Character.toString(charArray[i]); 
      if (map.get(char2String) == null) { 
       throw new IllegalArgumentException("int is null"); 
      } 

      int k = map.get(char2String); 
      charArray[i] = Integer.toString(k).charAt(0); 
     } 
    } 

これはメソッドをテストするためのテストケースです。

になり
@Test 
public void testSubstituteMap() { 
    LinkedBinaryTree<String> tree2 = Assignment.prefix2tree("- x + 1 + x x"); 
    HashMap<String, Integer> Map = new HashMap<String, Integer>(); 
    Map.put("x", 5); 
    tree2 = Assignment.substitute(tree2, Map); 
    LinkedBinaryTree<String> expected = Assignment.prefix2tree("- 5 + 1 + 5 5"); 
    assertEquals(Assignment.tree2prefix(expected), Assignment.tree2prefix(tree2)); 
} 

Failure Trace

+3

マップが文字列でキーされている場合、そのキーはいずれも文字ではありません。文字は文字列ではありません。 – khelwood

+0

**文字**をマップに追加したコードを表示してください –

+0

あなたはコードの大部分を欠場しました。メソッド全体を提供することさえできず、マップ変数はどこにも定義されていません。 – Vlasec

答えて

2

あなたは文字列のキーを置くと文字キーと同じを取得しようとしています。 Javaの"x"にあなたが鍵をchar型またはString配列を使用するように地図を変更することができますいずれか'x'

に等しいされていないことを

注意。彼らは一文字なので、私はそれらをChar'sと一緒に保つことを提案します。

+0

ありがとう!それは私が文字列のパラメータに文字を入れていた私に当たったことはありません。 – Nicholasmita

関連する問題