无法转换为int [] []

时间:2015-05-27 22:52:01

标签: java arrays multidimensional-array arraylist

所以我正在进行战争的纸牌游戏,我正在尝试将我使用2d数组创建的每张卡片放入阵列列表中。但是,我不断遇到“无法将int转换为int [] []'错误不断弹出。由于我将currentCard设为2d int,我对此为何发生了很大的困惑。

**我在编码的时候非常非常初学者,而且我确信这段代码充满了错误,但请保持好!

int[][] cards = new int[5][14];
int[][] currentCard;
Image[][] cardImage = new Image[5][14];

public void init()

{
    addKeyListener((KeyListener) this);
    addMouseListener((MouseListener) this);
    for(int suit=1;suit<=4;suit++)
    {
        for(int cardNum=1;cardNum<=13;cardNum++)
        {
            cardImage[suit][cardNum]= new ImageIcon("H:\\Downloads\\classic-cards\\" + suit + "-" + cardNum + ".png").getImage();
        }
    }

    for(int suit=1;suit<=4;suit++)
    {
        for(int cardNum=1;cardNum<=13;cardNum++)
        {
            currentCard= cards[suit][cardNum]; //error here- says i cannot convert from int to int[][]
            cardList.add(currentCard);
        }
    }
}

6 个答案:

答案 0 :(得分:2)

错误很明显,

currentCard代表int[][]声明:

int[][] currentCard;

但是,当您尝试对其进行影响时,请为其指定int

currentCard = cards[suit][cardNum];

因为cards也是int[][],您尝试在currentCard位置指定[suit][cardNum]

我非常确定你想要的是将currentCard声明为简单int,因为对于名为currentCard的变量来说,保留多个值是没有意义的。

答案 1 :(得分:1)

int[][] currentCard表示字段currentCard是一个矩阵,但实际上您希望将其用作cards矩阵中的一个值。

例如,

cards[3][4]将返回一个整数值,如果您希望在单个变量中提取它,那么它应该是相同的类型 - int - 值的类型,而不是int[][] - 结构的类型

TL; DR - 更改为int currentCard

答案 2 :(得分:0)

由于cards是二维数组,因此当您访问cards[suit][cardNum]时,它会返回int。但是,currentCard被定义为int[][]。因此,currentCard应定义为int

答案 3 :(得分:0)

我猜你试图将currentCard定义为int而不是int [] []

所以将第二条指令更改为

int currentCard;

无论如何你不能把int转换为矩阵

答案 4 :(得分:0)

我想我猜你想做什么,你希望将currentCard作为一对整数:一个用于套装,一个用于cardNum。如果你没有定义一个类卡(可能是家庭作业排除了类的使用?),那么作为一个单一变量来处理它将是非常困难的。)

如果班级卡{int Suit; int Num;排除了,可能你可以将currentCard定义为int [2];并将cardList作为此类数组的列表..

答案 5 :(得分:0)

currentCard= cards[suit][cardNum]; //Impossible

为例

int x;
int[][] matrix = new int[5][14];
matrix=x;//Impossible

但你可以

currentCard[suit][cardNum]= cards[suit][cardNum];

currentCard= cards;