54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K.
来源:互联网 发布:oracle闪回恢复数据 编辑:程序博客网 时间:2024/05/01 19:13
方式一:
package com.james.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class Poker
{
int color;// 花色 1.大王,小王,2.黑桃,3.红心,4.草花,5.方块
int id;// 扑克字面值 大王1,小王2,其他花色1-13 分别代表A-K
public Poker(int color, int id)
{
this.color = color;
this.id = id;
}
public int getColor()
{
return color;
}
public int getId()
{
return id;
}
public static void Display(List<Poker> l)
{
Iterator<Poker> it = l.iterator();
while (it.hasNext())
{
Poker pk = it.next();
System.out.println("Color:" + pk.getColor() + " ,Id:" + pk.getId());
}
}
public static void main(String[] args)
{
Poker p0 = new Poker(1, 1);// 大王
Poker p1 = new Poker(1, 2);// 小王
int n = 4;// 普通花色种类
int m = 13;// 普通花色扑克字面值上限
Poker[] p = new Poker[52];// 普通花色扑克
// 构建扑克数组
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
p[i * m + j] = new Poker(i + 2, j + 1);
List<Poker> l = new ArrayList<Poker>();
// 扑克倒序插入List中(这里为了简单只是倒序,也可以写方法随机打乱顺序)
for (int i = p.length - 1; i >= 0; i--)
l.add(p[i]);
l.add(p0);
l.add(p1);
// 实例化一个比较器,用于给List排序
Comparator<Poker> cmp = new Comparator<Poker>()
{
@Override
public int compare(Poker o1, Poker o2)
{
/*
* 排序使用的规则 先按花色排序,如果花色相同再按字面值排序
*/
int color1 = o1.getColor();
int color2 = o2.getColor();
if (color1 < color2)
return -1;
if (color1 > color2)
return 1;
// 花色相同
int id1 = o1.getId();
int id2 = o2.getId();
if (id1 < id2)
return -1;
if (id1 > id2)
return 1;
// 花色和字面值都相同
return 0;
}
};
System.out.println("排序前List的内容:");
Display(l);
// 给list排序
Collections.sort(l, cmp);
System.out.println("排序后List的内容:");
Display(l);
}
}
方式二:
package test;
import java.util.ArrayList;
import java.util.List;
public class Pk {
public static void main(String[] args) {
String[] suit={"黑桃","红桃","樱花","方块"};
String[] rank={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
List cards =new ArrayList();
cards.add("大王");
cards.add("小王");
for (int i = 0; i < suit.length; i++)
for (int j = 0; j < rank.length; j++)
cards.add(suit[i]+rank[j]);
for (int i = 0; i <cards.size(); i++) {
if(i==1 || (i-1)%13==0)
System.out.println(cards.get(i));
else
System.out.print(cards.get(i)+" ");
}
}
}
import java.util.ArrayList;
import java.util.List;
public class Pk {
public static void main(String[] args) {
String[] suit={"黑桃","红桃","樱花","方块"};
String[] rank={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
List cards =new ArrayList();
cards.add("大王");
cards.add("小王");
for (int i = 0; i < suit.length; i++)
for (int j = 0; j < rank.length; j++)
cards.add(suit[i]+rank[j]);
for (int i = 0; i <cards.size(); i++) {
if(i==1 || (i-1)%13==0)
System.out.println(cards.get(i));
else
System.out.print(cards.get(i)+" ");
}
}
}
0 0
- 54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K.
- 假定一副新扑克牌的顺序为:大王、小王、黑桃A,2,3,…,T,J,Q,K、红心A,2,3,…,T,J,Q,K、方块 A,2,3,…,T,J,Q,K、梅花A,2,3,…,T,J,Q,K。现将两副扑克牌摞
- UVa--11988 Broken Keyboard (a.k.a. Beiju Text) (list)
- [a,b]=>k
- A. k-String
- A. K-Periodic Array
- K短路 spfa + A*
- a*b%k
- K - Just a Hook
- A. k-Factorization
- codeforces A. k-Factorization
- A. k-Factorization
- A*和K短路
- A*与K短路
- 一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?
- P20 (*) Remove the K'th element from a list.
- 题目:扑克牌的顺子 从扑克牌中随机抽出5张牌,判断是不是一个顺子,即这五张牌是不是连续的。2——10为数字本身,A为1,J为11,Q为12,K为13,而大小王为任意数字。
- 24点游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1)
- 黑马程序员--临近毕业,黑马四期徐同学11k就业发来的感谢信
- 利用PostMessage触发其他窗口类自定义消息响应函数实现主窗口和子窗口数据交互
- HDU1115 Gravity(求重心)
- svn 无法上传.a 文件的解决办法
- 彻底弄清楚session是什么?
- 54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K.
- 详解stdin,stdout,stderr
- Struts2文件上传(一):Common-FileUpload
- 最新CyanogenMod CM-11.0 源码下载和编译,自己定制ROM
- 抽象类和接口的区别
- java 打jar包(含源码)
- php每日学习总结(4)
- std::string 的 replace 函数 bug
- Linux下的mount命令使用方法(转载)