当前位置: 代码迷 >> Java相关 >> 求助 一个洗牌程序为什么有重?
  详细解决方案

求助 一个洗牌程序为什么有重?

热度:303   发布时间:2006-11-30 21:24:34.0
求助 一个洗牌程序为什么有重?
提示: 作者被禁止或删除 内容自动屏蔽
2006-11-30 13:24:34
千里冰封

来 自:灌水之王
等 级:版主
威 望:155
帖 子:28495
专家分:57
注 册:2006-2-26
  得分:0 

你这样取随机数是没有用的
最好还是用一个向量来保存所有的牌,然后取一张删一张,就不会有重复的了


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-11-30 13:46:34
千里冰封

来 自:灌水之王
等 级:版主
威 望:155
帖 子:28495
专家分:57
注 册:2006-2-26
  得分:0 

那你怎么保证你以前取过的下标没有重复的呢?


----------------解决方案--------------------------------------------------------
所以最好还是借助JAVA的强大的数据结构来实现
多方便
----------------解决方案--------------------------------------------------------

对啊,能不能跟我解释一下向量是什么意思啊


----------------解决方案--------------------------------------------------------
向量就是java.util.Vector
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-12-01 01:26:38
千里冰封

来 自:灌水之王
等 级:版主
威 望:155
帖 子:28495
专家分:57
注 册:2006-2-26
  得分:0 

[CODE]/*
* SendCard.java
*
* Created on 2006年12月1日, 上午9:34
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author lbf
*/
import java.util.*;
public class SendCard {
private Vector<Card> v;
/** Creates a new instance of SendCard */
public SendCard() {
initOther();
}
private void initOther(){
v=new Vector<Card>();
for(int i=1;i<=13;i++){
v.add(new Card('A',i));
v.add(new Card('B',i));
v.add(new Card('C',i));
v.add(new Card('D',i));
}
}
public void display(){
int total=0;
while(v.size()!=0){
total++;
System.out.print(v.remove((int)(Math.random()*v.size()))+"\t");
if(total%13==0)
System.out.println();
}
}
public static void main(String[] args) {
SendCard sc=new SendCard();
sc.display();
}

}
class Card{
private int num;
private char name;
public Card(char name,int num){
this.num=num;
this.name=name;
}
public String toString(){
return ""+name+":"+num;
}
}[/CODE]

你看看吧


----------------解决方案--------------------------------------------------------
  相关解决方案