
正文
扑克牌排序java代码 扑克牌排序java代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java扑克牌排序用Collections.sort()方法怎么排
有两种方式
1,class Card implements ComparableCard
然后实现compareTo方法,
2,Collectons.sort(result, new ComparatorCard(){
public int compare(Card c1, Card c2)
{
//return ...
}
})
相关问答
Q1: java实现54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王
送扑克牌排序java代码你一个全套洗牌加排序
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不发牌,其扑克牌排序java代码他继续)");
while(!"n".equalsIgnoreCase(sc.nextLine())){
createCard();
randomCard();
outCart();
System.out.println();
System.out.println();
System.out.println();
System.out.println("排序后扑克牌排序java代码的牌为:");
sortCard();
outCart();
System.out.print("是否发牌:(N不发牌,其扑克牌排序java代码他继续)");
};
}
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;
}
});
}
}
Q2: 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]);
}
}
Q3: java 怎么写compareto方法实现扑克牌排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/*
* 思路:
* A:创建一个HashMap集合
* B:创建一个ArrayList集合
* C:创建花色数组和点数数组
* D:从0开始往HashMap里面存储编号,并存储对应的牌
* 同时往ArrayList里面存储编号即可。
* E:洗牌(洗的是编号)
* F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
* G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
*/
public class PokerDemo {
public static void main(String[] args) {
// 创建一个HashMap集合
HashMapInteger, String hm = new HashMapInteger, String();
// 创建一个ArrayList集合
ArrayListInteger array = new ArrayListInteger();
// 创建花色数组和点数数组
// 定义一个花色数组
String[] colors = { "♠", "♥", "♣", "♦" };
// 定义一个点数数组
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
"K", "A", "2", };
// 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号即可。
int index = 0;
for (String number : numbers) {
for (String color : colors) {
String poker = color.concat(number);
hm.put(index, poker);
array.add(index);
index++;
}
}
hm.put(index, "小王");
array.add(index);
index++;
hm.put(index, "大王");
array.add(index);
// 洗牌(洗的是编号)
Collections.shuffle(array);
// 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
TreeSetInteger fengQingYang = new TreeSetInteger();
TreeSetInteger linQingXia = new TreeSetInteger();
TreeSetInteger liuYi = new TreeSetInteger();
TreeSetInteger diPai = new TreeSetInteger();
for (int x = 0; x array.size(); x++) {
if (x = array.size() - 3) {
diPai.add(array.get(x));
} else if (x % 3 == 0) {
fengQingYang.add(array.get(x));
} else if (x % 3 == 1) {
linQingXia.add(array.get(x));
} else if (x % 3 == 2) {
liuYi.add(array.get(x));
}
}
// 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
lookPoker("风清扬", fengQingYang, hm);
lookPoker("林青霞", linQingXia, hm);
lookPoker("刘意", liuYi, hm);
lookPoker("底牌", diPai, hm);
}
// 写看牌的功能
public static void lookPoker(String name, TreeSetInteger ts,
HashMapInteger, String hm) {
System.out.print(name + "的牌是:");
for (Integer key : ts) {
String value = hm.get(key);
System.out.print(value + " ");
}
System.out.println();
}
}
扑克牌排序java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于扑克牌排序java代码、扑克牌排序java代码的信息别忘了在本站进行查找喔。






