public void Card(){
String storage1 = "黑桃红桃梅花方片";
String storage2 = "123456789JQKA";
List washCard = new ArrayList();
List colour = new ArrayList();
String Card = new String ();
for(;colour.size()<4;)
{
do
{
//控制花色种类
int S1=(int)(Math.random()*4);
Card = storage1.substring(S1*2, S1*2+2);
//控制花色的大小
for(int number =0; number<13;number++)
{
Bd = new StringBuilder();
//不考虑大小王,每种花色的扑克牌一共十三种大小,所以循环13次
//每次都加入一种进入washCard
//防止重复添加,所以用List的contains查看有没有该扑克牌,有就用dowhile重新循环一次,没有再添加
do
{
Bd.append(Card);
int S2 =(int)(Math.random() * 13) ;
if(S2==0)
{
Bd.append("10");
}
else
{
Bd.append(storage2.charAt(S2));
}
}while(washCard.contains(Bd));
//这里输出总是显示FALSE,即使重复也是FALSE,我用eclipse自动重写equals方法和HashCode也还是不行
System.out.println(washCard.contains(Bd));
washCard.add(Bd);
System.out.println(Bd);
//这里输出总是显示TRUE,这个好理解,因为刚刚添加了
System.out.println(washCard.contains(Bd));
}
}while(colour.contains(Card));
colour.add(Card);
// (washCard.contains(Cd));
// washCard.add(Cd);
}
for(int num = 0; num
{
System.out.print( "");
System.out.println(washCard.size());
}
下面是输出效果
false
方片6
true
false
方片5
true
false
方片2
true
false
方片K //这里显示添加了方片K
true
false //这里显示FALSE
方片K //刚刚查询的花色是方片K ,上面明明添加了
true
false
方片J
true
false
方片3
true
false
方片2
true
false
方片A
true
false
方片4
true
false
方片5
true
false
方片2
true
false
方片10
true
false
梅花3
true