所以我正在进行战争的纸牌游戏,我正在尝试将我使用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);
}
}
}
答案 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;