Я работаю над проектом покера, который просто наносит 5 верхних карт из перетасованной колоды и позволяет пользователю отклонить все, некоторые или ничего. Я понимаю, что должно быть идеально 2-3 класса, один с фактическим основным, а два других - карта и колода. Я создал класс Deck и очень базовую программу Tester, которая, как предполагается, должна печатать перетасованные карты. Однако, когда я печатаю колоду, я получаю что-то по строкам «Deck @ ### d ## a». Что я делаю не так?Базовая программа покера - печатная колода
import java.util.Random;
public class Deck {
// Constructing a deck from two arrays
String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] rank = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
String[] deck = new String[suit.length * rank.length];
// Storing public variables
int suits = suit.length;
int ranks = rank.length;
int deckSize = deck.length;
public Deck()
{
for(int i = 0; i < suits; i++)
{
for(int j = 0; j < ranks; j++)
{
deck[ranks*i + j] = rank[j] + " of " + suit[i];
}
}
}
// Fisher-Yates Shuffle
public void shuffle()
{
Random rand = new Random();
for (int i = 0; i < deckSize; i++)
{
int x = rand.nextInt(deckSize);
String temp = deck[x];
deck[x] = deck[i];
deck[i] = temp;
}
}
}
А класс тестер:
import java.util.Scanner;
public class DeckTester {
public static void main(String[] args) {
Deck deck = new Deck();
System.out.println(deck);
}
}
Выход: Deck @ ### d ### метод
Вам необходимо переопределить метод toString в классе Deck. Также рассмотрите использование Enum вместо массивов String, поскольку у вас есть определенный набор значений. –
Кроме того, ваша тасовка НЕ является правильным Fisher-Yates. Если вы скопировали это из другого источника, вы можете сообщить им об их ошибке. Статья в Википедии - хороший источник. –