2015-02-24 92 views
1

我是新来的Java编程,并已开始创建一个扑克游戏。到目前为止,已经创建了卡牌和甲板,但我希望能够选择一张随机卡牌,但我不想洗牌。在Java中选择一张随机卡片

这是我到目前为止的代码:

import java.util.ArrayList; 
import java.util.List; 


public class PockerMain { 

    public PockerMain() { 
     // TODO Auto-generated constructor stub 
    } 

    public static void main(String[] args) { 
     List<PokerCard> deck = cardDeck(); 
     for (int i = 0; i < deck.size(); i ++) 
     { 
      PokerCard card = deck.get(i); 
      System.out.println(card); 
     } 

    } 
    private static PokerCard createCard (short suit, short rank) 
    { 
     PokerCard card = new PokerCard (suit, rank); 
     return card; 
    } 
    private static List<PokerCard> cardDeck() 
    { 
     List<PokerCard> deck = new ArrayList<PokerCard>(); 
     for (int i = 0; i < 4; i ++) 
     { 
      for (int j = 0; j < 13; j ++) 
      { 
       PokerCard card = createCard ((short)i, (short)j); 
       deck.add(card); 
      } 

     } 
     return deck; 
    } 
} 
+0

所以[Random.nextInt(range)](http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt%28int%29)应该做的伎俩然后。 – gtgaxiola 2015-02-24 16:05:21

+0

欢迎来到堆栈溢出!这里的好问题显示你已经尝试了什么,以及遇到了什么问题。你的代码到目前为止建立了一个套牌,但我看不到任何代码试图选择一个随机卡 - 到目前为止你尝试过什么?到目前为止,您在Java中读取/发现了哪些关于生成随机数(比如0到52之间)的内容? – 2015-02-24 16:10:03

+0

我设法找到了一个方法,包括检查它是否已经从卡组中移除了卡,这样当它处理一只手时它不会给你同样的卡: – FraserMunro 2015-02-24 16:34:50

回答

0

Random.nextInt尝试,这将给0和n-1之间的随机数。因此,像:

Random random = new Random(); 
int nextCardToPick = random.nextInt(deck.size());//get random number in range 0 - deck.size (assuming 52 cards then it will give value between 0 -51) 
System.out.println(deck.get(nextCardToPick));//access by index 
0

,不使用随机对象: PokerCard rCard = deck.get((INT)(的Math.random()* deck.size()));