自己写的一个洗扑克牌的java程序

昨天去一朋友所在的公司 唱吧—你的手机KTV (小小做一下宣传:目前app store排名很靠前的一款软件)面试了一把,结果XX

其中一个洗扑克牌的程序,昨天在草稿纸上写的,面试官说描述不清晰,今天抽空在电脑上实现了一下,为这次面试画上个句号。

package com.bankht.test.xipai;import java.util.Random;import org.junit.Test;/** * @author: 特种兵—AK47 * @创建时间:2012-10-24 上午09:44:39 *  * @类说明 :洗牌算法 */public class XipaiTest {private String[] singleCards = new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };private String[] allCards = new String[54];private String temp = null;// 定义临时变量,用以交换数组中两个值的位置@Testpublic void testXipai() {String[] cards = initCard();for (int s = 0; s < 1000; s++) {/* * 从[0,53]之间随机选取两个数字cardNum1,cardNum2, * 交换对应的数组值位置(cards[cardNum1]<——>cards [cardNum2]) * 该步骤循环1000次 */int cardNum1 = new Random().nextInt(54);int cardNum2 = new Random().nextInt(54);temp = cards[cardNum1];cards[cardNum1] = cards[cardNum2];cards[cardNum2] = temp;}testCardMessage(cards);// 测试扑克牌当前排序状态}/** * 初始化扑克牌 *  * @return 扑克牌数组 */private String[] initCard() {for (int i = 0; i < 13; i++) {String[] initCard = addMessage2Card(singleCards[i]);for (int j = 0; j < 4; j++) {allCards[i * 4 + j] = initCard[j];}}allCards[52] = "小王";allCards[53] = "大王";return allCards;}/** * 针对2,3,4...Q,K,A 都有公共信息【红桃、方片、梅花、黑桃】,在初始化时进行添加 *  * @param card * @return */private String[] addMessage2Card(String card) {return new String[] { "红桃" + card, "方片" + card, "梅花" + card, "黑桃" + card };}/** * 测试扑克牌当前排序状态 *  * @param allCards */private void testCardMessage(String[] allCards) {for (int m = 0; m < allCards.length; m++) {System.out.print(allCards[m] + ",");if ((m + 1) % 4 == 0) {System.out.println();}}}}

运行一下:

方片K,黑桃8,梅花2,红桃2,梅花5,梅花8,红桃K,黑桃9,红桃4,方片9,梅花J,方片8,梅花Q,梅花4,黑桃Q,红桃10,黑桃7,方片5,红桃3,大王,红桃6,黑桃J,方片2,方片A,黑桃2,黑桃A,梅花A,方片3,红桃7,黑桃10,方片6,梅花10,方片Q,小王,梅花3,红桃8,黑桃6,黑桃K,黑桃3,红桃J,红桃A,黑桃5,红桃5,梅花6,方片J,方片4,红桃Q,黑桃4,红桃9,梅花7,方片7,梅花K,方片10,梅花9,

其实只是个把两个随机数对应扑克牌位置去相互交换的思想,至于将一副扑克牌还原整齐就用到常用的排序(选择排序、希尔、冒泡等)了

最后:与这家公司已经失之交臂了,不过还是真心的祝愿这款软件能够保持目前的迅猛态势,快速发展。不管怎样,万分感谢晓凯的推荐,谢谢田然总监的建议。

心有多大,舞台就有多大。

自己写的一个洗扑克牌的java程序

相关文章:

你感兴趣的文章:

标签云: