谢谢。高分回报。
package myContainer;
public class AssociativeArray<K,V> {
   private Object[][] pairs;
   private int index;
   public AssociativeArray(int length){
      pairs = new Object[length][2];
   }
   public void put(K key,V value){
      if(index >= pairs.length) throw new ArrayIndexOutOfBoundsException();
      pairs[index++] = new Object[]{key,value};
   }
   public V get(K key){
      for(int i=0;i<index;i++)
         if(key.equals(pairs[i][0]))
            return (V)pairs[i][1];
      return null;
   }
   public String toString(){
      StringBuilder result = new StringBuilder();
      for(int i=0;i<index;i++){
         result.append(pairs[i][i].toString());
         result.append(":");
         result.append(pairs[i][1].toString());
         if(i<index -1)
            result.append("\n");
      }
      return result.toString();
   }
   public static void main(String args[]) {
      AssociativeArray<String,String>map = new AssociativeArray<String, String>(6);
      map.put("sky","blue");
      map.put("grass","green");
      map.put("ocean","dancing");
      map.put("tree","tall");
      map.put("earth","brown");
      map.put("sun","warm");
      try{
         map.put("extra","object");
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Too many objects!");
      }
      System.out.println(map);
      System.out.println(map.get("ocean"));   }
}  

解决方案 »

  1.   

    错误都不说在哪。。
    看了代码没问题 只看到一个问题public String toString(){
          StringBuilder result = new StringBuilder();
          for(int i=0;i<index;i++){
             result.append(pairs[i][i].toString());
             result.append(":");
             result.append(pairs[i][1].toString());
             if(i<index -1)
                result.append("\n");
          }
          return result.toString();
       }
    改成下面这样 public String toString(){
          StringBuilder result = new StringBuilder();
          for(int i=0;i<index;i++){
             result.append(pairs[i][0].toString());
             result.append(":");
             result.append(pairs[i][1].toString());
             if(i<index -1)
                result.append("\n");
          }
          return result.toString();
       }
      

  2.   

      AssociativeArray<String,String>map = new AssociativeArray<String, String>(6);
          map.put("sky","blue");
          map.put("grass","green");
          map.put("ocean","dancing");
          map.put("tree","tall");
          map.put("earth","brown");
          map.put("sun","warm");
          try{
             map.put("extra","object");
    存了7个,还有就是楼上说的问题
      

  3.   


    public class AssociativeArray<K, V> {
        // 定义二维对象数组
        private Object[][] pairs;    // 定义索引,默认初始化为0
        private int index;    /**
         * 构造器,生成指定个数的二维数组
         * @param length 要生成的个数
         */
        public AssociativeArray(int length) {
            pairs = new Object[length][2];
        }    /**
         * 放入元素
         * @param key 键
         * @param value 值
         */
        public void put(K key, V value) {
            // 如果放入的个数已经超过申请的空间数抛出异常
            if (index >= pairs.length) {
                throw new ArrayIndexOutOfBoundsException();
            } else {
                // 否则增加元素
                pairs[index++] = new Object[] { key, value };
            }
        }    /**
         * 按照指定的键取得对应的值,若不存在则返回null
         * @param key
         * @return
         */
        public V get(K key) {
            V v = null;
            for (int i = 0; i < index; i++) {
                if (key.equals(pairs[i][0])) {
                    return v = (V) pairs[i][1];
                }
            }
            return v;
        }    /**
         * 生写toString方法
         */
        public String toString() {
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < index; i++) {
                // result.append(pairs[i][i].toString());
                // 这条语句在你执行时就会报错,应该改为下面的,因为你的第二维,长度总是2,
                // 如果pairs[i][i] i会取到大于2的值
                result.append(pairs[i][0].toString());
                result.append(":");
                result.append(pairs[i][1].toString());
                if (i < index - 1) result.append("\n");
            }
            return result.toString();
        }    /**
         * just for test
         * @param args
         */
        public static void main(String args[]) {
            // 声明一个长度为6的AssociativeArray
            AssociativeArray < String, String > map = new AssociativeArray < String, String >(6);
            // 放入对应的值
            map.put("sky", "blue");
            map.put("grass", "green");
            map.put("ocean", "dancing");
            map.put("tree", "tall");
            map.put("earth", "brown");
            map.put("sun", "warm");
            try {
                // 已经放入了6个,放入第七个时会报错
                map.put("extra", "object");
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("Too many objects!");
            }
            System.out.println(map);
            System.out.println(map.get("ocean"));
        }
    }
      

  4.   

    for(int i=0;i<index;i++){
             result.append(pairs[i][i].toString());
    //这里出现错误了,Array....Exce 说是2.显然你不能
    用I而是0 写错了吧.pairs[i][0]
             result.append(":");
             result.append(pairs[i][1].toString());
             if(i<index -1)
                result.append("\n");
          }