//随机发3张扑克牌
public class PlayCards {
//随机数字1-13转成牌的大小
public static String number(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;
}
//随机大小1-4转成牌的花色
public static String color(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);
int dx=1+(int)(Math.random()*4);
int[] a=new int[4];//大小
int[] b=new int[4];//花色
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]){
                System.out.println("第"+i+"张:"+color(b[i])+number(a[i]));
         continue;
                       }
          i=i+1;
}
    }
}到底杂样才能达到随机发3张牌目的呢~~

解决方案 »

  1.   

    if(a[i]!=a[i-1]&&b[i]!=b[i-1])
    把continue去掉
      

  2.   

    恩..去掉
    continue;
    而且你这个并不能保证随机3张。.
     int   k=1;
    while(i<=3)
    {
        a[k]=sz;
        b[k]=dx;
        if(a[k]!=a[k-1]&&b[k]!=b[k-1]){
                    System.out.println("第"+i+"张:"+color(b[k])+number(a[k]));
               i=i+1;
                           }
            k++;
    }
      

  3.   

    哈哈,我最近也在做这样的程序,我觉得你这样的写法不太合理;
    你可以看看Collections.shuffle(arrayList, new Random());
    Collections.shuffle可以实现:一个有序的数组,转化成无序的数组;
    可以看看下面我写的片段;Stack cards = new Stack();
    //生成8副牌;
    for (int i = 0; i < 8; i++)
    {
      //生成一副52张得牌;
       for (int j = 1; j < 53; j++)
       {
           cards.push(new Integer(j));
       }
    }
    //洗牌;
    Collections.shuffle(cards, new Random());
    //取牌;
    cards.pop();//取最后一张;
    cards.shift();//取第一张;
      

  4.   

    刚才那个写错了Collections.shuffle()里面只能接收list所以你要把cards 声明成List
    取牌可以直接用cards.subList(0, 3);
    要不你就在把List转换成Stack在用.pop()取牌;
      

  5.   

    去掉continue;把
    int sz=1+(int)(Math.random()*13);
    int dx=1+(int)(Math.random()*4);
    放到循环里面去
    不然你每次赋同样的值
    当然只有一个结果
    你要在循环里面给sz,dx赋值
      

  6.   

    public class PlayCards {
    //随机数字1-13转成牌的大小
    public static String number(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;
    }
    //随机大小1-4转成牌的花色
    public static String color(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;
    int dx;
    int[] a=new int[4];//大小
    int[] b=new int[4];//花色
    a[0]=0;
    b[0]=0;
    int i=1;
    //就是这下面出错了呢~我修改了几次~要么是个死循环,要么就是只有一条结果
    while(i<=3){
        sz=1+(int)(Math.random()*13);
        dx=1+(int)(Math.random()*4);
        a[i]=sz;
        b[i]=dx;
        if(a[i]!=a[i-1]&&b[i]!=b[i-1]){
                    System.out.println("第"+i+"张:"+color(b[i])+number(a[i]));
             //continue;
                           
              i=i+1;
            }
    }
        }
    }
       这样就好了