Выход показывает ноль - PullRequest
       2

Выход показывает ноль

1 голос
/ 20 сентября 2019

Итак, я новичок в программировании, и у меня есть проект в классе, который просит меня сделать бридж-раздачу и раздать ее четырем игрокам.Одна из задач просит меня распечатать перемешанную колоду, однако, когда я пытаюсь ее распечатать, она выводит 52 пустых оператора вместо перемешанной колоды.Может кто-нибудь, пожалуйста, помогите мне разобраться в этом.Спасибо.

import java.util.*;

public class Card {

   public static String[] SUITS = {"Clubs","Diamonds","Hearts","Spades"};
   public static String[] RANKS = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

   public static String[]deck = new String[52];

   public static String[] createDeck() { // initializes and creates deck

      for(int i = 0; i < RANKS.length ; i++) {
         for(int j = 0; j < SUITS.length ; j++) {

            deck[SUITS.length * i + j] = RANKS[i] + " of " + SUITS[j];
         }
      }
      return deck; 
   }

   public static void shuffleDeck(String[]deck) { //shuffles deck created from array
      int n = deck.length;

      for (int i = 0; i < n; i++) {

         int r = i + (int)(Math.random() * (n-i));

         String temp = deck[r];
         deck[r] = deck[i]; 
         deck[i] = temp;

         System.out.println(deck[i]);
      }  
   }   

   public static void main(String[] args) {
      Card.shuffleDeck(deck);

   }

1 Ответ

1 голос
/ 20 сентября 2019

В вашем методе main() отсутствует вызов createDeck():

public static void main(String[] args) {
    createDeck();
    shuffleDeck(deck);
}

Поскольку следующий оператор инициализирует массив deck только значениями 52 null:

public static String[]deck = new String[52];

Вам необходимо заполнить массив deck фактическими значениями, чтобы они правильно отображались.И вы можете безопасно пометить createDeck() как void, потому что вам не нужно возвращать массив deck, поскольку он объявлен как static, который будет доступен в любом случае.То же самое относится и к методу shuffleDeck(), вам не нужно передавать массив static, он будет доступен.

Или вы можете использовать другой подход, в котором массив deck объявлен каклокальная переменная, и она передается этим методам в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...