//随机发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张牌目的呢~~
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张牌目的呢~~
把continue去掉
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++;
}
你可以看看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();//取第一张;
取牌可以直接用cards.subList(0, 3);
要不你就在把List转换成Stack在用.pop()取牌;
int sz=1+(int)(Math.random()*13);
int dx=1+(int)(Math.random()*4);
放到循环里面去
不然你每次赋同样的值
当然只有一个结果
你要在循环里面给sz,dx赋值
//随机数字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;
}
}
}
}
这样就好了