【问题标题】:Cannot convert in to int[][]无法转换为 int[][]
【发布时间】:2015-08-10 05:55:08
【问题描述】:

所以我正在制作纸牌战争游戏,并尝试将使用二维数组创建的每张卡片放入数组列表中。但是,我不断遇到“无法将 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);
        }
    }
}

【问题讨论】:

  • 附带说明,您不需要addKeyListener((KeyListener) this);,您可以直接使用addKeyListener(this)。同样适用于addMouseListener

标签: java arrays multidimensional-array arraylist


【解决方案1】:
currentCard= cards[suit][cardNum]; //Impossible

示例

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

但你可以

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

currentCard= cards;

【讨论】:

    【解决方案2】:

    我想我猜你想要做什么,你希望 currentCard 作为一些整数对:一个用于花色,一个用于 cardNum。如果您不定义类 Card 将很难将其作为单个变量处理(可能作业排除了使用类?)。

    If class Card {int Suit;整数; } 被排除,也许你可以将 currentCard 定义为 int[2];并且您将 cardList 作为此类数组的列表..

    【讨论】:

      【解决方案3】:

      我猜你正在尝试将 currentCard 定义为 int 而不是 int [][]

      所以将第二条指令改为

      int currentCard;
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          TL;DR - 更改为 int currentCard

          【讨论】:

            【解决方案6】:

            错误很明显,

            currentCard 代表 int[][] 根据它的声明:

            int[][] currentCard;
            

            然而,当你试图影响它时,你给它一个int

            currentCard = cards[suit][cardNum];
            

            因为cards 也是int[][] 并且您尝试将[suit][cardNum] 位置处的int 分配给currentCard

            我很确定您想要将 currentCard 声明为简单的 int,因为名为 currentCard 的变量保存多个值是没有意义的。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-08-21
              • 2017-04-20
              • 2013-02-28
              • 2016-03-15
              • 1970-01-01
              相关资源
              最近更新 更多