【问题标题】:Getting a typemismatch error when trying to pass boolean argument [duplicate]尝试传递布尔参数时出现类型不匹配错误[重复]
【发布时间】:2017-04-26 15:42:53
【问题描述】:

在我的洗牌功能中,

    public void shuffleDeck(){              
        Random rng = new Random();
        for(int i = 0; i < shuffledDeck.length; i++){
            deckOfCards[i] = shuffledDeck[rng.nextInt(52)].setFlag(true);

我想遍历所有 52 张牌,然后将它们随机排列到另一个数组中。但是,为了防止同一张卡被覆盖,我在另一个类中编写了一个 setFlag 函数,该函数接受一个布尔参数,然后我将使用它来检查标志是否已设置等等。但是,在最后一行,我得到了错误 “类型不匹配:无法从 void 转换为 Card”......完全不确定我为什么会收到此错误。

【问题讨论】:

  • 卡片 c = shuffledDeck[rng nextInt(52)]; c.setFlag(true);卡片组[i]=c;
  • setFlag 是一个函数,而 shuffledDeck 是一个数组。您不能使用数组调用函数。
  • 那么这是怎么回事?deckOfCards[cardCount].setSuit(suit[suitCount]); deckOfCards[cardCount].setFace(face[faceCount], faceValue);

标签: java arrays types mismatch


【解决方案1】:

问题是你的函数 shuffleDeck 必须在没有参数的情况下调用,比如shuffleDeck();,无论如何,正如 cmets 中的人所说,你试图以一种不可能:shuffledDeck[rng.nextInt(52)]

任何函数都不能用你使用的语法调用。

【讨论】:

  • 假设我明白你在说什么,那么这是怎么回事?deckOfCards[cardCount].setSuit(suit[suitCount]); deckOfCards[cardCount].setFace(face[faceCount], faceValue);
  • 我不知道setSuitsetFace是什么,你调用得好不好。
猜你喜欢
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
相关资源
最近更新 更多