【问题标题】:Shuffling An Array List洗牌一个数组列表
【发布时间】:2016-01-12 15:47:11
【问题描述】:

我正在尝试洗牌ArrayList。我的甲板类中有一个方法,如下所示:

public void shuffle(Array <Deck1> deck){
    deckOne.shuffle();
}

在我的主游戏类中,我初始化了变量并想要洗牌。这是我所拥有的:

public class MainGame {
    private Deck1 deckOne;

    public MainGame() {
        deckOne = new Deck1();

        deckOne.shuffle(x);
    }
}

然后我去打印卡片。我遇到的问题是将什么传递给deckOne.shuffle(x); 行。 x 是我需要传入的。

任何帮助将不胜感激。

我在 LibJDX 中编码。

我尝试了下面显示的shuffle 方法,它也不起作用。

public void shuffle(){
    deckOne.shuffle();
}

【问题讨论】:

  • 你的问题到底是什么?
  • 就像我说的。 “我遇到的问题是在“deckOne.shuffle(x);”行中传递什么。其中“x”是我需要传递的。”
  • 你必须传递Array &lt;Deck1&gt; 的实例我不能告诉你你从哪里得到它,因为你没有显示你对Deck1 的定义
  • @Faro 我已经尝试过 deckOne.shuffle(Deck1);它不起作用
  • 您可能想要洗牌。在现实生活中,您将一副牌洗牌,但一副牌由 52 张牌组成。您对问题或抽象的理解不够好。一张牌将有花色(红心、梅花、菱形、黑桃)和价值(A、2、3 等)。

标签: java libgdx


【解决方案1】:

就像 Faro 和 duffymo 已经说过你的问题不是很清楚 - 或者至少我们不太了解它。我认为这里的问题可能是您为您的域使用了不合适的设计。特别是,为什么您需要将任何东西传递给Deck 类的shuffle 方法?它不应该能够洗自己的内部卡片吗?

在我看来,这样的设计更有意义:

class Card {
   private int value;
   private String suit; // Or an enum, whatever you prefer

   ... constructor/getters/setters ...
}

class Deck {
    private ArrayList<Card> cards;

    ... constructor to initialize cards ...

    public void shuffle() {
        Collections.shuffle(cards);
    }
}

public class MainGame {
    private Deck deckOne;

    public MainGame() {
        deckOne = new Deck();
        deckOne.shuffle();
    }
}

【讨论】:

    【解决方案2】:

    让我们做一个简单的:整数的List

    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    /**
     * Demonstration of shuffle feature
     * User: mduffy
     * Date: 1/12/2016
     * Time: 11:05 AM
     * @link http://stackoverflow.com/questions/34747973/shuffling-an-array-list?noredirect=1#comment57242343_34747973
     */
    public class ShuffleDemo {
    
        public static void main(String[] args) {
            List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
            System.out.println(String.format("before shuffle: %s", numbers));
            Collections.shuffle(numbers);
            System.out.println(String.format("after  shuffle: %s", numbers));
        }
    }
    

    你会如何改变它,使它成为CardList,它有一套西装和一个面值? Deck 有一个List&lt;Card&gt; 有意义吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 2013-08-30
      • 2015-04-15
      相关资源
      最近更新 更多