这个程序本来一开始我想的是把两副牌输入到一个文本文件中,然后从中取出30张,然后排序.其实不用存入文件中,只用构造这两副牌,知道它是存在的就可以了...
class TestPuker
{
public static void main (String[] args){
PukerControl pc=new PukerControl();
int times=2;
Puker[][] p=pc.getPuker(times,30,2);
pc.SortPuker(p);
for(int i=0;i<times;i++){
for(int j=0;j<30;j++){
System.out.print(p[i][j].PukerInfo());
System.out.print(" ");
}
System.out.println();
}
}
}
class PukerControl
{
PukerControl()
{
}
public Puker[][] getPuker(int i, int j, int k)
{
Puker apuker[][] = new Puker[i][j];
int l = 52 * k;
int ai[] = new int[l];
for(int i1 = 0; i1 < ai.length; i1++)
ai[i1] = i1 + 1;
for(int j1 = 0; j1 < i; j1++)
{
for(int k1 = 0; k1 < j; k1++)
{
int l1 = (int)(Math.random() * (double)l);//随机的读取0~103之间的数
int i2 = ai[l1];//使l1每个数都加1,变成随机读取1~104之间的数
int j2 = (i2 / 13) % 4;//随机的从1~4中取数
int k2 = i2 % 13;//随机的从1~13中取数
ai[l1] = ai[l - 1];// 数组个数也-1
l--;//每取出一个后,总牌数-1
apuker[j1][k1] = new Puker();
apuker[j1][k1].pic = j2;
apuker[j1][k1].num = k2;
}
}
return apuker;
}
public void SortPuker(Puker apuker[][])
{
for(int i = 0; i < apuker.length; i++)
{
for(int j = 0; j < apuker[i].length - 1; j++)
{
for(int k = j + 1; k < apuker[i].length; k++)
if(apuker[i][j].num < apuker[i][k].num || apuker[i][j].num == apuker[i][k].num && apuker[i][j].pic > apuker[i][k].pic)
{
Puker puker = apuker[i][j];
apuker[i][j] = apuker[i][k];
apuker[i][k] = puker;
}
}
}
}
}
class Puker
{
public int pic;
public int num;
Puker()
{
}
public String PukerInfo()
{
String s = "";
String s1 = "";
switch(pic)
{
case 0: // '/0'
s = "/u9ED1/u6843";
break;
case 1: // '/001'
s = "/u7EA2/u6843";
break;
case 2: // '/002'
s = "/u6885/u82B1";
break;
case 3: // '/003'
s = "/u65B9/u7247";
break;
}
switch(num)
{
case 12: // '/f'
s1 = "A";
break;
case 11: // '/013'
s1 = "K";
break;
case 10: // '/n'
s1 = "Q";
break;
case 9: // '/t'
s1 = "J";
break;
default:
s1 = (new Integer(2 + num)).toString();
break;
}
return s + s1;
}
}