【问题标题】:i need to make i program that prints out a shuffled deck of cards and a sorted deck of cards我需要让我的程序打印出一副洗牌的纸牌和一副分类好的纸牌
【发布时间】:2017-08-24 20:05:31
【问题描述】:

创建一个随机卡片数组。 使用 toString 方法(未排序)在格式化的打印语句中输出此数组。 使用选择排序对数组进行排序。 从牌组中最高的牌到最低的牌排序。 字母升序:梅花(最低),其次是菱形、红心和黑桃(最高) 一副牌中最高的牌是黑桃 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);
    }
  }
}

【问题讨论】:

  • 您好,欢迎来到 StackOverflow。这几乎是一个不错的问题 - 您自己尝试了这个问题并发布了您的代码,这很好 - 但是要改进这个问题,您需要告诉我们与您的预期相比它在什么方面不起作用。我们很乐意帮助您解决任何问题,但我们不会为您完成任务!

标签: java arrays sorting


【解决方案1】:

您的随机化方法有效 :) 您只需要添加排序即可。试试这样的:

   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);
        }
    }

【讨论】:

  • 感谢您的帮助,这使编码变得更加容易。
【解决方案2】:

这似乎是一项任务,所以我不会直截了当地给你答案,但我可以为你指出正确的方向,这样你就可以自己解决了。

首先,你需要在你的类中创建一个 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() 方法,然后确保打印出您的计数变量。

【讨论】:

  • 感谢您的帮助,这使编码变得更容易。
猜你喜欢
  • 2023-01-11
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多