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

要求采用的顺序为:大王,小王,黑桃A-K,红心A-K,草花A-K,方块A-K.... 要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K. 展开
 我来答
nanwanglsky
推荐于2018-04-04 · 超过23用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:47.8万
展开全部
送你一个全套洗牌加排序
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];
List<String> listCards = new ArrayList<String>();
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;i<cardColor.length;i++){
for(int j=0;j<number.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;i>1;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 Comparator<String>(){
@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;
}

});
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韵蓝玉梦
2014-03-20 · 超过14用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:34.9万
展开全部
循环放呗,分五类,分别为王、黑桃、红心、草花、方块
追问
敢不敢具体点,把代码发给我?
追答
你敢不敢自己写个代码?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式