java - 基本扑克程序 - 打印牌组

标签 java arrays unit-testing poker

我正在开发一个扑克项目,该项目只处理洗牌后的 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###a

最佳答案

您看到了 Object 类中默认的 `toString() 方法,并且您发现它并没有太大帮助。您也没有创建 Card 或真正的 Deck 类,因此您无法为任何类提供合适的 toString() 方法。

解决方案:

  • 创建 Card 类。
  • 为其指定排名和值字段。
  • 为其提供一个 toString() 方法。
  • 创建 Deck 类
  • 给它一组卡片。
  • 给它一个合适的 toString() 方法。

例如,

// for Deck
@Override 
public String toString() {
   StringBuilder sb = new StringBuilder();
   for (Card card: cards) {
      sb.append(card.toString() + ", ");
   }
   return sb.toString();
}

关于java - 基本扑克程序 - 打印牌组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336725/

相关文章:

java - 将 WAR 文件部署到远程服务器后出现错误(在本地机器上没有错误)

sql - Hive collect_set() 但要删除连续的重复项

c++ - Boost.Test - 问题覆盖主要

javascript - 如何使用spyOn模拟Jasmine中选择器的jQuery值?

java - 使用正确的参数在 groovy 脚本之间调用方法

java - 为什么 eclipse 的 m2e 插件会向 src 插入可选属性,它有什么作用

java - Android - 一旦网络连接发生变化(移动数据禁用并再次启用),Paho Mqtt 客户端不接收消息

java - 如何打破方法中的循环

php - 来自字符串的多维数组

unit-testing - 模拟具有工作单元依赖性的 ApiController