
java实现54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王
2个回答
展开全部
送你一个全套洗牌加排序
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;
}
});
}
}
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;
}
});
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环放呗,分五类,分别为王、黑桃、红心、草花、方块
追问
敢不敢具体点,把代码发给我?
追答
你敢不敢自己写个代码?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询