2016-12-11 28 views
-4

在我的洗牌甲板功能时获得一个typemismatch错误,试图通过boolean变量

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转换为卡片......”不知道为什么我得到这个错误。

+0

卡片c = shuffledDeck [rng nextInt(52)]; c.setFlag(真); deckOfCards [I] = C; –

+1

setFlag是一个函数,shuffledDeck是一个数组。您不能使用数组调用函数。 – AlphaQ

+0

那么这是怎么来的呢?deckOfCards [cardCount] .setSuit(suit [suitCount]); deckOfCards [cardCount] .setFace(face [faceCount],faceValue); – ComradeSpaceMan

回答

0

的问题是,你的函数shuffleDeck必须用无参数调用,像shuffleDeck();,反正在评论人所说的,你想的方式,是不可能的调用:shuffledDeck[rng.nextInt(52)]

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

+0

假设我明白你在说什么,那么这个工作如何?deckOfCards [cardCount] .setSuit(suit [suitCount]); deckOfCards [cardCount] .setFace(face [faceCount],faceValue); – ComradeSpaceMan

+0

我不知道** setSuit **和** setFace **是什么,如果你调用的很好。 –