import java.util.*;
class ErsBlock
{
    static Map<int[][],Integer> Block=new HashMap<int[][],Integer>();
    int[][][] block=new int[][][]
    {
{
    {1,1,0},
    {1,1,0},
    {0,0,0}
},
{
    {1,1,0},
    {1,1,0},
    {0,0,0}
},
{
    {1,1,0},
    {1,1,0},
    {0,0,0}
},
{
    {1,1,0},
    {1,1,0},
    {0,0,0}
},
{
    {0,1,0},
    {0,1,1},
    {0,1,0}
},
{
    {0,0,0},
    {1,1,1},
    {0,1,0}
},
{
    {0,1,0},
    {1,1,0},
    {0,1,0}
},
{
    {0,1,0},
    {1,1,1},
    {0,0,0}
}
    };
    Block.put(block[0],"2"); 
    Block.put(block[1],"2");
    Block.put(block[2],"2");
    Block.put(block[3],"2");
    Block.put(block[4],"3");
    Block.put(block[5],"2");
    Block.put(block[6],"3");
    Block.put(block[7],"2");
    public static int[][] getBlock(int i)
{
     return block[i];
}
}
block[0]是一个二维数组,就是个对象啊,为什么报错?

解决方案 »

  1.   

     static Map <int[][],Integer> Block=new HashMap <int[][],Integer>(); 你的Map(K,V) 中的v 是Integer 而Block.put(block[0],"2");  是一个字符串
      

  2.   

    错误1:static Map <int[][],Integer> Block=new HashMap <int[][],Integer>(); 
    而你添加的时候是Block.put(block[0],"2"); 你添加了一个二维数组和一个String类型的,而不是Integer
    错误2 public static int[][] getBlock(int i) 

        return block[i]; 

    静态方法不能访问本类的非静态属性
      

  3.   

    当然你也可以把语句写在static {} 块中。其它的都用static标识
      

  4.   

    Map有逻辑也有问题,你的key是一个int[][],你将来怎么从Map中取出value来呢?int[][]的equals()方法应该就是继承自Object的,所以你放和取都是按地址来的.放进去好说,取出来不好搞了.解决的办法是把int[][]封装到一个类里,类里重写equals方法。