我想编一个连发3张扑克牌的JAVA程序。
编发一张牌好办,可发3张牌,要考虑到一副扑克里没有相同的牌,那结果就得有个比较。我是这样写的:public class PlayCards {
           //随机发牌的数字选择
public String shuzi(int a){
String b="";
switch(a){
case 1:
b="A";
break;
case 2: 
b="2";
break;
case 3:b="3";break;
case 4:b="4";break;
case 5:b="5";break;
case 6:b="6";break;
case 7:b="7";break;
case 8:b="8";break;
case 9:b="9";break;
case 10:b="10";break;
case 11:b="L";break;
case 12:b="Q";break;
case 13:b="K";break;
    default: 
     break;
}  
return b;
}
        //随机发牌的花色选择
public String huase(int a){
String b="";
    switch(a){
      case 1:b="梅花";break;
     case 2:b="方块";break;
     case 3:b="黑桃";break;
     case 4:b="红桃";break;
     default:
     break;
    }
    return b;
}     public static void main (String[] args) {
int sz=1+(int)(Math.random()*13); //随机数字13个
int dx=1+(int)(Math.random()*4);  //随机花色4种
int[] a=new int[3];    
int[] b=new int[3];
a[0]=0;
b[0]=0;
int i=1;
while(i<=3)
{ a[i]=sz;
b[i]=dx;
 if(a[i]!=a[i-1]&&b[i]!=b[i-1])//排除出现相同的牌
PlayCards no(i)=new PlayCards();    
   System.out.println("第"+i+"张:"+no(i).huase(a[i])+no(i).shuzi(b[i]));
  continue;
  i=i+1; }
}
}我觉得我那个方法调用不大对,可要弄三个对象实例的话,这样不利于扩展。而且我觉得,这样不大好 排除出现相同的牌~~我到底该怎么修改呢

解决方案 »

  1.   

    如果你要写一个使用一付纸牌的游戏的话,就写一个Card类,其中有花色、号码属性。实例化54个对象,一副牌,统统装进一个Vector对象里,每随机取一张牌,就从vector中移除,这样肯定不会重复,并且很容易扩展。
      

  2.   

    就让你用随机函数。sum = 54;for (int i=0; i<3; i++){
        rand = Meth.random() * sum--;    deal[i] = v.elementAt(rand);
        v.remove(rand);
    }
      

  3.   

    也建议写个Card类
    建立一个ArrayList,将52张牌放进去
    然后用
    Collections.shuffle(list);
    将顺序打乱。
    每次取牌的时候list.remove(list.size()-1)来取得card,这样顺序随即而且不重复。
    扑克牌的游戏就是这样实现的