java - 如何为扑克评估器打乱两个数组

标签 java arrays poker

我正在开发一个扑克程序。我在弄清楚如何洗牌时遇到一些问题。我必须使用数组。我无法使用枚举或列表。我知道有更好的方法来制作这个程序,但重点是理解数组。

我在弄清楚如何洗牌时遇到一些问题。我试图让这个过程尽可能简单,所以我有一个类来获取这副牌并洗牌。

import java.util.Arrays;
import java.util.Random;

public class Card 
{


    String[] suits = { "Spades", "Clubs", "Hearts", "Diamonds" };
    String[] values = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"};

    public Card()
    {

    }

        public void getCards()
        {
           for(int indexSuit = 0; indexSuit < suits.length; indexSuit++)
           {

              String suit = suits[indexSuit];
              System.out.print(suit + " ");

               for(int indexType = 0; indexType < values.length; indexType++)
               {
                  String type = values[indexType];
                  System.out.print(type + " ");
               }
           }

        }    

        public void shuffle(String[] suit, String[] value)
        {
            Random rndSuits = new Random();
            Random rndType = new Random();

            for(int indexSuit = suits.length - 1; indexSuit > 0; indexSuit--)
            {
                int index = rndSuits.nextInt(indexSuit + 1);

                String temp = suits[indexSuit];
                suits[indexSuit] = suit[index];
                suit[index] = temp;

                System.out.print(temp);

                for(int indexType = values.length -1; indexType > 0; indexType--)
                {
                    int index2 = rndType.nextInt(indexType + 1);

                    String temp2 = values[indexType];
                    values[indexType] = value[index2];
                    value[index2] = temp2;

                    System.out.print(temp2);
                }
            }
        }

        public void deal()
        {

        }
}

这是我的主要内容:

public class FiveCardPoker 
{

    public static void main(String[] args){
    Card timsCards = new Card();

    timsCards.getCards();
    timsCards.shuffle(args, args);

    }

}

我试图根据我在这里发现的另一个问题编写洗牌方法,但它仅适用于单个数组。我不确定 shuffle 方法的逻辑是否正确。我也不太确定如何在我的主要方法中调用它。

当我调用 timsCards.shuffle 时,如何将数组从 Card 类获取到 Main 类?

编辑:所以我尝试像这样编辑它,但它似乎没有做任何事情。

public void shuffle()
        {
            Collections.shuffle(Arrays.asList(suits));
            Collections.shuffle(Arrays.asList(values));
            System.out.println(Arrays.toString(values) + " of " + Arrays.toString(suits));
        }

最佳答案

我能想到的理想方法是,您可以从这些数组中创建一些Collection并使用

Collections.shuffle() 方法。

代码-

 String[] suits = {"Spades", "Clubs", "Hearts", "Diamonds"};
 List<String> list = Arrays.asList(suits);
 Collections.shuffle(list);
 System.out.println(list); //Prints shuffled list

Javadoc

关于java - 如何为扑克评估器打乱两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24811003/

相关文章:

javascript - 将 PHP 数组转换为 JavaScript

java - 在二维数组中切换数组大小需要不同的内存量

algorithm - 在不创建边池的情况下确定扑克中的获胜金额

c++ - 为德州扑克编写逻辑子底池系统

java - 迭代时修改集合中元素的概念?

java - 导入 Javax.xml.ws.Endpoint 出现错误

javascript - 将数字添加到数组元素并分配给另一个数组元素时出现问题

c++ - 如何使用 bjam 在 cygwin windows7 i686-w64-mingw32-g++ 中编译 Boost(和链接?)库

java - 为什么带符号的右移会带来 1 而不是只在最重要的位置保留 1?

java - Android - 数据库插入未插入