1

char配列を値として、文字列をキーとしてハッシュマップをまとめようとしています。キーと値を出力しようとしていますが、配列の範囲外の例外が引き続き発生します。何が問題なのかわからない。(また、地図を間違って印刷しようとしている可能性があります。他の投稿から離れているだけです)。誰かがこれの論理で私を助けることができますか. 助けてくれてありがとう。これが私のコードです:

public class MapExample {

     public static void main(String[] args) {

       Map<String,char[]> mp=new HashMap<String, char[]>();

       char[] words = new char[2];
       words[0] = 'a';
       words[1] = 'b';
       words[2] = 'c';

       mp.put("1", words);
       mp.put("2", words);
       mp.put("3", words);

       Set s=mp.entrySet();
       Iterator it=s.iterator();

        while(it.hasNext())
        {           
            Map.Entry m =(Map.Entry)it.next();
            int key=(Integer)m.getKey();
            String value=(String)m.getValue();

            System.out.println("Key :"+key+"  Value :"+value);
        }
    }
}
4

5 に答える 5

7

配列はゼロベースです。wordsインデックスで要素を割り当てることができるように、の配列サイズを増やします2

char[] words = new char[3];
于 2013-06-14T15:14:23.167 に答える
3

new char[2]「2までのインデックスを持つ新しい配列を作成する」という意味ではありません。「2つの値を保持できる新しい配列を作成する」ことを意味し、配列のインデックスが0から始まるため、インデックスは0から1になります。

于 2013-06-14T15:16:15.097 に答える
1

新しい配列を作成するときに使用される整数引数は、その配列で使用できる最大のインデックスではなく、配列の実際のサイズです。したがって、他の人が言ったように、あなたは望むでしょう

char[] words = new char[3];

3 つの要素を保持できる配列を作成します。

于 2013-06-14T15:16:29.127 に答える
1

words[2] が犯人です! 配列wordsはまたはサイズ2です。したがって、Words[0]とwords[1]のみを持つことができます

于 2013-06-14T15:15:35.117 に答える