2016-12-11 7 views
-4

В моей функции воспроизведения в случайном порядке палубе,Получение ошибки typemismatch при попытке передать логический аргумент

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] = с; –

+1

setFlag - это функция, а shuffledDeck - массив. Вы не можете вызывать функцию с помощью массива. – AlphaQ

+0

то как это работает? DeckOfCards [cardCount] .setSuit (костюм [suitCount]); deckOfCards [cardCount] .setFace (face [faceCount], faceValue); – ComradeSpaceMan

ответ

0

Проблема заключается в том, что функция shuffleDeck должен быть вызван без аргументов, как shuffleDeck();, во всяком случае, так как люди в комментариях говорили, вы пытаетесь вызвать таким образом, не представляется возможным: shuffledDeck[rng.nextInt(52)].

Любая функция не может быть вызвана с использованием синтаксиса, который вы использовали.

+0

Предполагая, что я понимаю, что вы говорите, тогда как это работает? DeckOfCards [cardCount] .setSuit (suit [suitCount]); deckOfCards [cardCount] .setFace (лицо [лицоCount], лицоValue); – ComradeSpaceMan

+0

Я не знаю, что такое ** setSuit ** и ** setFace **, и если вы вызываете хорошо. –