我需要制作一个程序,打印出一张洗牌的纸牌和一副整齐的纸牌

时间:2017-03-30 18:23:47

标签: java arrays sorting

创建一个随机卡数组。 使用toString方法(未排序)在格式化的print语句中输出此数组。 使用选择排序对数组进行排序。 从甲板中的最高牌到最低牌。 升序字母顺序:俱乐部(最低),其次是钻石,心形和黑桃(最高)  甲板上最高的牌是黑桃ACE,最低的是2个俱乐部。 使用toString方法输出已排序的数组。 同时打印出数字迭代次数

我是一名首发编码员,需要帮助,这是我开始的一些内容。

public class DeckOfCards2 {
  public static void main(String[] args) {
    int[] deck = new int[52];
    String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
    String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};

    // Initialize cards
    for (int i = 0; i < deck.length; i++) {
      deck[i] = i;
    }

    // Shuffle the cards
    for (int i = 0; i < deck.length; i++) {
      int index = (int)(Math.random() * deck.length);
      int temp = deck[i];
      deck[i] = deck[index];
      deck[index] = temp;
    }

    // Display the all the cards
    for (int i = 0; i < 52; i++) {
      String suit = suits[deck[i] / 13];
      String rank = ranks[deck[i] % 13];
      System.out.println( rank + " of " + suit);
    }
  }
}

2 个答案:

答案 0 :(得分:0)

你的方法随机化工作:)你只需要添加排序。尝试这样的事情:

   public static void main(String[] args) {
        int[] deck = new int[52];
        String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
        String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King","Ace"};

        // Initialize cards
        for (int i = 0; i < deck.length; i++) {
            deck[i] = i;
        }

        // Shuffle the cards
        for (int i = 0; i < deck.length; i++) {
            int index = (int)(Math.random() * deck.length);
            int temp = deck[i];
            deck[i] = deck[index];
            deck[index] = temp;
        }

        // Display the all the cards
        for (int i = 0; i < 52; i++) {
            String suit = suits[deck[i] / 13];
            String rank = ranks[deck[i] % 13];
            System.out.println( rank + " of " + suit);
        }


        System.out.println("------------------------------");
        for(int i=0;i<deck.length;i++){
            for(int j=i;j<deck.length;j++){
                if(deck[j]==51-i){
                    int temp = deck[i];
                    deck[i] = deck[j];
                    deck[j] = temp;
                }
            }
        }

        // Display the all the cards
        for (int i = 0; i < 52; i++) {
            String suit = suits[deck[i] / 13];
            String rank = ranks[deck[i] % 13];
            System.out.println( rank + " of " + suit);
        }
    }

答案 1 :(得分:0)

这似乎是各种各样的任务,所以我不打算给你答案,但我可以指出你正确的方向,所以你可以自己解决。

首先,你需要在课堂上使用toString方法。这些通常如下所示:

public String toString(array[]){

    // your code here
    return text;

}

该方法接受一个数组参数(这是您需要打印的数据)。在这个内部,您可能需要某种for循环或while循环来循环遍历数组并使用类似

之类的内容将每个元素添加到字符串实例变量中
text = text + array[i];

通过这种方式,您可以将数组中的每个值添加到字符串中,然后返回该字符串。

接下来,问题表明你必须创建一个“随机卡随机数组”。您已经拥有生成随机卡的代码。相反,您需要将结果添加到新的随机数组而不是打印出来。这是您的主未排序数组。在您的主要方法中,您可以按照

的方式执行某些操作
// prints out unsorted array
System.out.println(toString(array));

其中 array 是随机未排序数组的名称。

接下来开始创建排序数组的过程。在此处阅读有关选择排序的示例代码的更多信息:http://www.javatpoint.com/selection-sort-in-java

如上所述,请确保计算迭代次数。这可以通过递增计数变量轻松完成。

count++;

对数组进行排序后,只需像以前一样将其发送到toString()方法,然后确保打印出计数变量。