Создание класса DeckOfCards с массивом - PullRequest
0 голосов
/ 13 марта 2012

Я боролся с этим в течение последних нескольких дней и надеюсь, что кто-то может предложить какое-то руководство. Впервые работаю с массивами в Java, и только около 2 месяцев изучаю Java. Быть нежным. :)

По-моему, я создаю параллельный массив, в котором cardInDeck [] [] заполняется с помощью cardName (например, Ace, 10, Jack) и suitName (например, Hearts, Spades и т. Д.). Хотя мои выходные данные метода и то, что я ~ думаю ~, что я пишу в массив, соответствуют ожиданиям, при выводе содержимого массива я получаю некоторые аномальные результаты.

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

Буду признателен за любую помощь, которую вы можете предложить. Заранее спасибо!

Код и результаты приведены ниже.

import java.util.*;
import java.lang.*;
//
public class DeckOfCards
{
   public static void main(String[] args)
   {
      int rank;
      int suit;
//
   for(rank=1;rank<14;rank++)
   {
       String tempCardName = Integer.toString(rank);
       String cardName;
       if(rank==1)
       cardName="Ace";
       else
       if(rank==13)
       cardName="King";
       else
       if(rank==12)
       cardName="Queen";
       else
       if(rank==11)
       cardName="Jack";
       else
       cardName=tempCardName;
 //
       for(suit=1;suit<5;suit++)
       {
       String suitName;
       switch(suit)
       {case 1:
   suitName = "Spades";
   break;
   case 2:
   suitName = "Hearts";
   break;
   case 3:
   suitName = "Clubs";
   break;
         case 4:
   suitName = "Diamonds";
   break;
   default:
   suitName = "Error";}
       String tempCardInDeck=(cardName + " of " + suitName);
       System.out.print("method output: " tempCardInDeck);
 //*
       String[][] cardInDeck = new String[][]
          {
             {cardName,suitName}
          };
       System.out.print(" /// to array: " + cardName + " " + suitName);
       System.out.println(" /// from array: " + Arrays.toString( cardInDeck ) );
     }
     }
   }
 }

РЕЗУЛЬТАТЫ:

method output: Ace of Spades /// to array: Ace Spades /// from array: [[Ljava.lang.String;@9ffb18]
method output: Ace of Hearts /// to array: Ace Hearts /// from array: [[Ljava.lang.String;@11de914]
method output: Ace of Clubs /// to array: Ace Clubs /// from array: [[Ljava.lang.String;@b1406b]
method output: Ace of Diamonds /// to array: Ace Diamonds /// from array: [[Ljava.lang.String;@fc5408]
method output: 2 of Spades /// to array: 2 Spades /// from array: [[Ljava.lang.String;@1f102c1]
method output: 2 of Hearts /// to array: 2 Hearts /// from array: [[Ljava.lang.String;@1ec0130]
method output: 2 of Clubs /// to array: 2 Clubs /// from array: [[Ljava.lang.String;@1420fea]
method output: 2 of Diamonds /// to array: 2 Diamonds /// from array: [[Ljava.lang.String;@230be4]
method output: 3 of Spades /// to array: 3 Spades /// from array: [[Ljava.lang.String;@e1e567]
method output: 3 of Hearts /// to array: 3 Hearts /// from array: [[Ljava.lang.String;@9bfee2]
method output: 3 of Clubs /// to array: 3 Clubs /// from array: [[Ljava.lang.String;@17aaeec]
method output: 3 of Diamonds /// to array: 3 Diamonds /// from array: [[Ljava.lang.String;@1721a26]
method output: 4 of Spades /// to array: 4 Spades /// from array: [[Ljava.lang.String;@12db7c]
method output: 4 of Hearts /// to array: 4 Hearts /// from array: [[Ljava.lang.String;@7c28c]
method output: 4 of Clubs /// to array: 4 Clubs /// from array: [[Ljava.lang.String;@17588d5]
method output: 4 of Diamonds /// to array: 4 Diamonds /// from array: [[Ljava.lang.String;@16a7c99]
method output: 5 of Spades /// to array: 5 Spades /// from array: [[Ljava.lang.String;@1a5d08]
method output: 5 of Hearts /// to array: 5 Hearts /// from array: [[Ljava.lang.String;@d1c9b5]
method output: 5 of Clubs /// to array: 5 Clubs /// from array: [[Ljava.lang.String;@111c3f0]
method output: 5 of Diamonds /// to array: 5 Diamonds /// from array: [[Ljava.lang.String;@156f14c]
method output: 6 of Spades /// to array: 6 Spades /// from array: [[Ljava.lang.String;@fbd1fc]
method output: 6 of Hearts /// to array: 6 Hearts /// from array: [[Ljava.lang.String;@973678]
method output: 6 of Clubs /// to array: 6 Clubs /// from array: [[Ljava.lang.String;@1791620]
method output: 6 of Diamonds /// to array: 6 Diamonds /// from array: [[Ljava.lang.String;@9ba632]
method output: 7 of Spades /// to array: 7 Spades /// from array: [[Ljava.lang.String;@bc5245]
method output: 7 of Hearts /// to array: 7 Hearts /// from array: [[Ljava.lang.String;@1bd523d]
method output: 7 of Clubs /// to array: 7 Clubs /// from array: [[Ljava.lang.String;@6250d2]
method output: 7 of Diamonds /// to array: 7 Diamonds /// from array: [[Ljava.lang.String;@a8198c]
method output: 8 of Spades /// to array: 8 Spades /// from array: [[Ljava.lang.String;@25753d]
method output: 8 of Hearts /// to array: 8 Hearts /// from array: [[Ljava.lang.String;@1341183]
method output: 8 of Clubs /// to array: 8 Clubs /// from array: [[Ljava.lang.String;@169cccc]
method output: 8 of Diamonds /// to array: 8 Diamonds /// from array: [[Ljava.lang.String;@10469e8]
method output: 9 of Spades /// to array: 9 Spades /// from array: [[Ljava.lang.String;@c4fedd]
method output: 9 of Hearts /// to array: 9 Hearts /// from array: [[Ljava.lang.String;@138847d]
method output: 9 of Clubs /// to array: 9 Clubs /// from array: [[Ljava.lang.String;@1826ac5]
method output: 9 of Diamonds /// to array: 9 Diamonds /// from array: [[Ljava.lang.String;@12fb063]
method output: 10 of Spades /// to array: 10 Spades /// from array: [[Ljava.lang.String;@1e55d39]
method output: 10 of Hearts /// to array: 10 Hearts /// from array: [[Ljava.lang.String;@14b525c]
method output: 10 of Clubs /// to array: 10 Clubs /// from array: [[Ljava.lang.String;@c4c05]
method output: 10 of Diamonds /// to array: 10 Diamonds /// from array: [[Ljava.lang.String;@1530551]
method output: Jack of Spades /// to array: Jack Spades /// from array: [[Ljava.lang.String;@18235a1]
method output: Jack of Hearts /// to array: Jack Hearts /// from array: [[Ljava.lang.String;@18ee2ee]
method output: Jack of Clubs /// to array: Jack Clubs /// from array: [[Ljava.lang.String;@1d48043]
method output: Jack of Diamonds /// to array: Jack Diamonds /// from array: [[Ljava.lang.String;@30cd64]
method output: Queen of Spades /// to array: Queen Spades /// from array: [[Ljava.lang.String;@1fc9fee]
method output: Queen of Hearts /// to array: Queen Hearts /// from array: [[Ljava.lang.String;@67f797]
method output: Queen of Clubs /// to array: Queen Clubs /// from array: [[Ljava.lang.String;@1b01949]
method output: Queen of Diamonds /// to array: Queen Diamonds /// from array: [[Ljava.lang.String;@4c2849]
method output: King of Spades /// to array: King Spades /// from array: [[Ljava.lang.String;@1e8f2a0]
method output: King of Hearts /// to array: King Hearts /// from array: [[Ljava.lang.String;@90f19c]
method output: King of Clubs /// to array: King Clubs /// from array: [[Ljava.lang.String;@1e67280]
method output: King of Diamonds /// to array: King Diamonds /// from array: [[Ljava.lang.String;@675039]

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Если вы хотите распечатать содержимое массива, вы должны использовать Arrays.deepToString(cardInDeck) вместо Arrays.toString(cardInDeck).

0 голосов
/ 13 марта 2012

Еще один способ реализовать колоду карт - это использовать enums, что позволяет компилятору принудительно выполнять проверку типов, что является очень хорошей практикой. См. Oracle Java Tutorials для примеров карт , колода и отображения по этим ссылкам.

0 голосов
/ 13 марта 2012

То, что вы видите в выводе, является реализацией toString по умолчанию.Из документации для Arrays:

Возвращает строковое представление содержимого указанного массива.Если массив содержит другие массивы как элементы, они преобразуются в строки с помощью метода Object.toString (), унаследованного от Object, который описывает их идентификаторы, а не их содержимое.

Поскольку это версия по умолчанию из Object , что вы получите ...

Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект,символ знака «@» и шестнадцатеричное представление без знака хеш-кода объекта.

Как предлагается в другом ответе, Arrays.deepToString должно быть тем, что выпосле.Это на самом деле новый для меня, поэтому я попробую это для себя.

...