配列を使用した DeckOfCards クラスの作成
-
13-12-2019 - |
質問
私はここ数日間これと戦ってきましたが、誰かが何らかのガイダンスを提供できることを期待しています。Java で配列を扱うのは初めてで、Java を学習し始めてからわずか約 2 か月です。穏やかな。:)
私の頭の中で、cardInDeck[][] にカード名 (エース、10、ジャックなど) とスーツ名 (ハート、スペードなど) が入力される並列配列を作成しています。メソッドからの出力と配列に書き込もうとしている内容は期待どおりですが、配列の内容を出力するときに異常な結果が得られます。
これらの予期せぬ結果が、配列を宣言したときに不適切に構造化されているためなのか、神や自然 (または少なくとも 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]
解決
出力に見えているものは、toString
のデフォルトの実装です。 Arrays
のドキュメント:
指定された配列の内容の文字列表現を返します。配列に要素として他の配列が含まれている場合、それらはオブジェクトから継承されたObject.toString()メソッドによって文字列に変換されます。これは、それらの内容ではなくアイデンティティを記述します。
オブジェクト、あなたが得るものは何ですか...
クラスオブジェクトのToStringメソッドは、オブジェクトがインスタンスのクラスの名前、符号文字 `@ '、およびオブジェクトのハッシュコードの符号なし16進表現からなる文字列を返します。< / P>
別の答えで示唆されているように、 ARRAYS.DEEPETOSTRING が後でどうなっているはずです。それは実際に私にとって新しいものです、それで私は自分自身のためにそれを試してみるでしょう。
他のヒント
配列の内容を出力したい場合は、次を使用する必要があります。 Arrays.deepToString(cardInDeck)
の代わりに Arrays.toString(cardInDeck)
.
カードのデッキを実装するもう1つの方法は列挙型を使用しています。これにより、コンパイラはあなたのためのタイプチェック、非常に良い慣習を強制することができます。についてを参照してください。.ORACLE.COM / JAVASE /チュートリアル/ java / javaoo /例/ card.java "rel=" nofollow ">カード、 deck 、http://docs.oracle.com/javase/tutorial/java/javaoo/examples/displaydeck。これらのリンクでjava "rel=" nofollow ">表示を表示します。