今天突然想起来以前看书的时候看见过一个编程题,要求是生成一副扑克牌并且模拟一下发牌的动作。
这个问题对很多人来说已经不是问题了,但是还是难倒了我这个刚入门的初学者。当初这个问题让我头疼的地方就是怎么去得到一个随机不重复的数组。
上网查了一查,这个其实有很多种思路。
例如:在这里就列出了Java实现随机不重复的三种思路http://www.javaeerun.com/jr_1378708438508.html
1 本身这个数组是按照顺序排放的,然后我们把这个数组里面数据的顺序打乱,再从第一个元素开始逐个获取
2 本身这个数组是按照顺序排放的,然后我们随机的从里面抽取元素发出去。
3 通过随机数直接生成随机的元素,然后比对数组里面是否有相同的元素,比对通过就放进去。
就按照做一做吧
首先是扑克牌类Card:
package com.javaeerun.demo.carddemo; public class Card { private String assortment; // 花色 private int number; // 数值 public static final String CARD_ASSORTMENT[] = { "Spade", "Heart", "Diamond", "Club", "Red Joker", "Black Joker" }; // 黑桃 红桃 方片 梅花 大王 小王 public Card(String assortment, int number) { super(); this.assortment = assortment; this.number = number; } public String getAssortment() { return assortment; } public void setAssortment(String assortment) { this.assortment = assortment; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } @Override public String toString() { return "Card [assortment=" + assortment + ", number=" + number + "]"; } }
接下来是Main:
package com.javaeerun.demo.carddemo; import java.util.LinkedList; import java.util.List; public class Main { public static void main(String[] args) { Main main=new Main(); List<Card> cardList = main.createCardList(); //获取一个按照顺序排列的扑克牌,一共54张 while(cardList.size()>0){ //只要list里面有元素就取出来 int i=(int)(Math.random()*cardList.size()); System.out.println(cardList.get(i).toString()); cardList.remove(i); //把获得的元素从list里面删除 } } public List<Card> createCardList(){ //这个方法获取一个按照顺序排列的扑克牌 List<Card> cardList = new LinkedList<Card>(); for (int i = 0; i < 4; i++) { for (int j = 1; j < 14; j++) { cardList.add(new Card(Card.CARD_ASSORTMENT[i], j)); } } cardList.add(new Card(Card.CARD_ASSORTMENT[4], 0)); cardList.add(new Card(Card.CARD_ASSORTMENT[5], 0)); return cardList; } }
这样就完成了。
相关推荐
Java数组随机不重复输出数组元素的不同解法,大家探讨。
从n个数组中取出所有排列组合(Java实现)
使用java语言,随机出不重复的随机数放进数组里。
主要为大家详细介绍了java利用数组随机抽取幸运观众,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100 的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
1. Set:不允许重复的集合,常用的实现类有 HashSet、TreeSet、LinkedHashSet 等。 * HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。 * TreeSet:基于红黑树实现,支持有序性操作,但查找效率不如 ...
随机不重复_www.jb51.net 软件开发网 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 不重复的随机数方案2:297毫秒 但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算, 效率很低,...
假如我有一个数组: ... 我需要从中随机抽取2个数 不能重复抽取,我会用这个方法 public void getValue(ArrayList<Integer> mArrayList){ Random mRandom = new Random(); int a = mRandom.
本文给大家介绍如何在JAVA中实现随机无重复数字的功能。如果您是初学者的话,有必要看一看这篇文章,因为这个功能一般会在面试中遇到。包括我本人在招聘人员的时候也喜欢拿这个问题去问别人,主要看一看考虑问题的...
生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;...
* HashSet如何元素不重复:先用HashCode判断地址是否相等,如相等再用equals方法比较。 HashMap、HashTable、ConcurrentHashMap * HashMap线程不安全的,HashTable线程安全的任一时间只有一个线程能写Hashtable,...
在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。请完善以下代码: 2. 代码填空(满分3分) 不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换...
本篇资源摘要信息主要讲解 Java 集合框架的相关知识点,包括 Collection 接口、List 接口、Set 接口、Map 接口的特点和区别,以及 ArrayList、LinkedList、Vector 等实现类的使用和区别。 一、Collection 接口的...
随机(1~30之间)生成7个随机数,注意不能重复。然后从键盘输入7个数,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个号,显示...
实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例...