私はあなたのカードを引く前に、あなたのデッキを構築することにより、これを行うだろう。一つの方法はhttp://docs.oracle.com/javase/7/docs/api/index.html?java/util([ ``
を設定]クラス `Card`を作成して使用することである
// Use strings and pre-define our suit names.
String[] suit = { "Hearts", "Spades", "Clubs", "Diamonds" };
String[] face = new String[13];
String[] deck = new String[52];
// For the number of cards of a suit
for (int i = 1; i <= 13; i++) {
// Set the value of the card face;
String value = String.valueOf(i);
// Replace the value for special cards
if (i == 1 || i > 10) {
switch(i) {
case 11: value = "Jack";
break;
case 12: value = "Queen";
break;
case 13: value = "King";
break;
default: value = "Ace";
break;
}
}
// Set the face 2-10, Ace, Jack, Queen, King
face[i-1] = value;
}
// For each suit
for (int s = 0; s < suit.length; s++) {
// and each face value
for (int f = 0; f < face.length; f++) {
// add the face of that suit to the deck
// (Ace, 2-10, Jack, Queen, King) of
// (Hearts, Spades, Clubs, Diamonds)
deck[(13*s)+f] = face[f] + " of " + suit[s];
}
}
int[] handValue = new int[5];
int[] handSuit = new int[5];
int[] hand = new int[5];
// Draw 5 random cards
for(int h = 0; h < hand.length; h++) {
int card = 0;
do {
// Do set card to a random number;
card = rand.nextInt(52);
// OR
// If you want to be able to valuate the cards
// store values separated for further calculation
handValue[h] = rand.nextInt(13);
handSuit[h] = rand.nextInt(4);
card = handValue[h]*(handSuit[h]+1);
} while (IntStream.of(hand).anyMatch(x -> x == card))
// While the card is already in our hand
hand[h] = card;
}
System.out.print("\nHere are your five cards");
for (int j=0; j<5; j++) {
// Print the preformatted card value.
System.out.print("\n" + deck[hand[j]]);
}
/Set.html)を使用して一意性を保証します。しかし、それはあなたの既存のコードよりも複雑になりますが、これはもっと普通の方法です。 – Sangharsh
公式Javaチュートリアルをお試しください。演習の1つは、カード、デッキ、ランク、スーツのクラスを作成することです。 http://docs.oracle.com/javase/tutorial/java/javaOO/QandE/creating-answers.html –