54张扑克牌java代码的简单介绍

java怎样从54张扑克牌中随机产生五张 不重复的

例如:有数组a = [1,2,3,4,5,6,7,8,9,10],使用首先产生一个0~10(不包含10)的随机数,用来做数组下标。

成都创新互联公司是一家专业从事网站制作、成都做网站的网络公司。作为专业的建站公司,成都创新互联公司依托的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

Random r = new Random();

int rand = r.nextInt(10);//0~10之间的随机数,但不包含10。

假如rand=3。我们把a[3]放到之前创建好的数组里,你要取5张牌,这个数组就5个长。

然后把a[3]与a[9]的位置交换,交换之后的数组为a=[1,2,3,10,5,6,7,8,9,4]

再次获取随机数,但这里获取的是0~9之间的随机数。

int rand = r.nextInt(9);

rand的值不可能是9,那么下标为9的元素就不可能出现,也就不会重复。

假如这次rand=6,再把a[6]放到之前创建好的数组里。

再把a[6]与a[8]交换,交换之后的数组为a=[1,2,3,10,5,6,9,8,7,4]

再获取随机数时int rand = r.nextInt(8),那么rand就不可能是8或9。以此类推。

===========

import java.util.Arrays;

import java.util.Random;

public class Test {

public static void main(String[] args) {

int[] puKe = new int[54];

for(int i = 0; i puKe.length; i++) {

puKe[i] = i + 1;

}

int[] pai = faPai(puKe, 5);

Arrays.sort(pai);

System.out.println(Arrays.toString(pai));

}

public static int[] faPai(int[] puKe, int num) {

int[] pai = new int[num];//用来装载取出的牌,5个长。

int m = 0;//一共取5张,m表示当前取到第几张

int n = puKe.length;//随机数的范围,默认是0~n之间取随机数

Random r = new Random();

for(int i = 0; i num; i++, n--) {

int rand = r.nextInt(n);//rand为0~n之间的随机数

pai[m++] = puKe[rand];//用随机数做下标,把牌放到pai数组中,然后m++

// rand位置上的牌与n-1位置上的牌交换,因为n再自减,所以n-1也在自减。

int temp = puKe[n - 1];

puKe[n - 1] = puKe[rand];

puKe[rand] = temp;

}

return pai;

}

}

=============

如果你有扑克牌图片,那么就可以把获取到的int[]中的元素做为图片数组的下标了。

java实现54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王

送你一个全套洗牌加排序

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

public class CardSort {

private static String[] cards = new String[54];

ListString listCards = new ArrayListString();

public CardSort(){

Scanner sc = new Scanner(System.in);

System.out.print("是否发牌:(N不发牌,其他继续)");

while(!"n".equalsIgnoreCase(sc.nextLine())){

createCard();

randomCard();

outCart();

System.out.println();

System.out.println();

System.out.println();

System.out.println("排序后的牌为:");

sortCard();

outCart();

System.out.print("是否发牌:(N不发牌,其他继续)");

};

}

public static void main(String[] args) {

new CardSort();

}

//造牌

public void createCard(){

String[] king = {"大王","小王"};

String[] number = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

String[] cardColor = {"黑桃","草花","红桃","梅花"};

for(int i=0;icardColor.length;i++){

for(int j=0;jnumber.length;j++){

cards[i*13+j] = cardColor[i]+number[j];

}

}

cards[52] = king[0];

cards[53] = king[1];

}

//洗牌

public void randomCard(){

Random r = new Random();

String tempCard ="";

int randomNum = 0;

for(int i=54;i1;i--){

randomNum = r.nextInt(i);

tempCard =cards[i-1];

cards[i-1] = cards[randomNum];

cards[randomNum] = tempCard;

}

listCards.clear();

for(String card:cards){

listCards.add(card);

}

}

//输出牌

public void outCart(){

int tabLine = 0;

for(String list:listCards){

tabLine++;

System.out.print(list+"\t");

if(tabLine%10==0){

System.out.println();

}

}

System.out.println();

}

//排序

public void sortCard(){

Collections.sort(listCards, new ComparatorString(){

@Override

public int compare(String o1, String o2) {

int magicO1 = StringToInt(o1);

int magicO2 = StringToInt(o2);

return magicO2-magicO1;

}

private int StringToInt(String o){

char splitS1 = o.charAt(0);

char splitS2 = o.charAt(1);

int step1 = splitS1*2 - splitS2;

int step2 = 0;

if(o.length()==2){

step2 =step1 + 300000 - splitS1 *10;

}else{

int splitNum = 0;

String splitS3 = o.substring(2, o.length());

if("A".equals(splitS3)){

splitNum =1 ;

}else if("J".equals(splitS3)){

splitNum =11;

}else if("Q".equals(splitS3)){

splitNum =12;

}else if("K".equals(splitS3)){

splitNum =13;

}else{

splitNum = Integer.parseInt(splitS3);

}

step2 = step1-splitNum;

}

return step2;

}

});

}

}

java扑克牌52张排序程序如下,如何改变为54张(加上大王和小王)

修改的部分我加了#########你看一下吧

//这个初始化方法

publicvoidinitcard()

{

String num[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

String suit[]={"方块","梅花","红桃","黑桃"};

String bigwang,xiaowang;

card = newCardClass[54];//#######初始化54张而不是52张

for(inti=0;i52;i++)

{

card[i] = newCardClass(num[i%13],suit[i/13]);

}

car[52] = new CardClass("大王","");//#####初始化大王

car[53] = new CardClass("小王","");//######初始化小王

}

publicvoidshufflecard()//洗牌

{

Random rd = newRandom();

for(inti=0;i54;i++) //##########由52变为54

{

int j = rd.nextInt(54);//生成随机数 #######52变54

CardClass temp = card[i];//交换

card[i]=card[j];

card[j]=temp;

}

}

publicvoiddealcard()//发牌

{

for(inti=0;i54;i++)//##########由52变成54

{

if(i%12==0) System.out.println("\n");

System.out.print(card[i]);

}

}

JAVA编程创建一个List集合cards,再54张扑克牌存放到其中,请按下列要求编写程序:

public class PlayCard {

private ListInteger list;

/**

* JAVA编程创建一个List集合cards,再54张扑克牌存放到其中

* (1)用3种不同方法输出54张牌;

* (2)调用Collections方法随机分派54张牌

*/

public PlayCard() {

list = new ArrayListInteger();

for(int i=1;i55;i++){

list.add(i);

}

}

public void showPlayCard(){

System.out.println("方式一");

for(Integer i : list){

System.out.print(i+"\t");

}

System.out.println("方式二");

for(int i=0;ilist.size();i++){

System.out.print(list.get(i)+"\t");

}

System.out.println("方式三");

Iterator Integer it = list.iterator();

while(it.hasNext()){

System.out.print(it.next()+"\t");

}

}

// TODO调用Collections方法随机分派54张牌

public void randomPlayCards(){

// 把牌打乱

Collections.shuffle(list);

}

public static void main(String[] args) {

PlayCard p = new PlayCard();

p.randomPlayCards();

p.showPlayCard();

}

}


名称栏目:54张扑克牌java代码的简单介绍
分享地址:http://pwwzsj.com/article/dojigic.html