使用LinkedList存储一副扑克牌,然后实现洗牌功能。

/*
需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能。

*/
//扑克类
class Poker{
    String  color; //花色
    String num;    //点数
    public Poker(String color, String num) {
        super();
        this.color = color;
        this.num = num;
    }
    @Override
    public String toString() {
        return "{"+color+num+"}";
    }
}
public class Demo2 {
    public static void main(String[] args) {
        LinkedList pokers = createPoker();
        shufflePoker(pokers);
        showPoker(pokers);
    }

    //洗牌的功能
    public static void shufflePoker(LinkedList pokers){
        //创建随机数对象
        Random random = new Random();
        for(int i = 0 ; i <100; i++){
            //随机产生两个索引值
            int index1 = random.nextInt(pokers.size());
            int index2 = random.nextInt(pokers.size());
            //根据索引值取出两张牌,然后交换两张牌的顺序
            Poker poker1 =  (Poker) pokers.get(index1);
            Poker poker2 =  (Poker) pokers.get(index2);
            pokers.set(index1, poker2);
            pokers.set(index2, poker1);
        }

    }
    //显示扑克牌
    public static void showPoker(LinkedList pokers){
        for(int i = 0 ; i<pokers.size() ; i++){
            System.out.print(pokers.get(i));
            //换行
            if(i%10==9){
                System.out.println();
            }
        }

    }
    //生成扑克牌的方法
    public static LinkedList createPoker(){
        //该集合用于存储扑克对象。
        LinkedList list = new LinkedList();
        //定义数组存储所有的花色与点数
        String[] colors = {"黑桃","红桃","梅花","方块"};
        String[] nums = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        for(int i = 0 ; i < nums.length ; i++){
            for(int j = 0 ; j<colors.length ; j++){
                list.add(new Poker(colors[j], nums[i]));
            }
        }
        return list;
    }
}

/*需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能。

*///扑克类class Poker{String  color; //花色String num;//点数public Poker(String color, String num) {super();this.color = color;this.num = num;}@Overridepublic String toString() {return "{"+color+num+"}";}}public class Demo2 {public static void main(String[] args) {LinkedList pokers = createPoker();shufflePoker(pokers);showPoker(pokers);}//洗牌的功能public static void shufflePoker(LinkedList pokers){//创建随机数对象Random random = new Random();for(int i = 0 ; i <100; i++){ //随机产生两个索引值int index1 = random.nextInt(pokers.size());int index2 = random.nextInt(pokers.size());//根据索引值取出两张牌,然后交换两张牌的顺序Poker poker1 =  (Poker) pokers.get(index1);Poker poker2 =  (Poker) pokers.get(index2);pokers.set(index1, poker2);pokers.set(index2, poker1);}}//显示扑克牌public static void showPoker(LinkedList pokers){for(int i = 0 ; i<pokers.size() ; i++){System.out.print(pokers.get(i));//换行if(i%10==9){System.out.println();}}}//生成扑克牌的方法public static LinkedList createPoker(){//该集合用于存储扑克对象。LinkedList list = new LinkedList();//定义数组存储所有的花色与点数String[] colors = {"黑桃","红桃","梅花","方块"};String[] nums = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};for(int i = 0 ; i < nums.length ; i++){for(int j = 0 ; j<colors.length ; j++){list.add(new Poker(colors[j], nums[i]));}}return list;}}

时间: 2024-10-12 07:22:22

使用LinkedList存储一副扑克牌,然后实现洗牌功能。的相关文章

一个数组实现扑克牌均匀随机洗牌------多次洗牌能否避免黑客的计算?

闲来无事,研究下纸牌发牌,按斗地主来发吧,思路如下: 1,新建一个数组,长度52,将四种花色和大小王存储进数组 2,循环0至51,在循环因子i至52之间取随机数(能取到下界,不能取到上界),取到的随机数作为数组元素下标取该元素,与第i个元素交换位置,循环结束即排序完毕 3,输出纸牌即可. 思路明确,"啪啪啪~~" 12秒之后 贴上代码 1初始化数组 //声明存放纸牌的数组 string[] Card = new string[54]; //初始化四种花色和大小王,分别用▲★◆■+数字和

扑克牌的完美洗牌算法

思路: 递归思想.我们有n张牌,不妨先假设有一个洗牌函数shuffle(....),能完美的洗出n-1张牌 .拿第n张牌来打乱前面n-1的洗牌顺序,从而得到n张牌的最终结果. 代码如下: 1 #include <iostream> 2 #include <cstdlib> 3 using namespace std; 4 5 //随机指定区域内的数 6 int MyRand(int low, int high) 7 { 8 return low + rand() % (high -

用java怎么创建一副扑克牌

一张扑克牌有两个属性,一个是花色(suit),一个是点数(rank),下面写一个简单的类 Card package com.syz.card; import java.io.Serializable; public class Card implements Serializable{ private static final long serialVersionUID = -4279016186402068401L; private int suit; private int rank; pu

AS3.0 扑克牌乱序排列法洗牌

package { /* *@ClassName:package::PokerMain *@Intro:这是一个初始化1-52扑克牌,然后进行乱序排列进行洗牌: *@Author:非若 *@Date:2015.07.22 *@LanguageVersion:ActionScript 3.0 * */ import flash.display.Sprite; public class PokerMain extends Sprite { //设置扑克牌总数 private var NUM:Numb

通过数据库评估存储设备IO性能-Oracle 11g IO校准功能介绍

通过数据库评估存储设备IO性能 ---------Oracle11g IO校准功能介绍 前言 I/O子系统是ORACLE数据库的一个重要组成部分,因为I/O操作是贯穿数据库管理全过程,它操作的对象包括日志.表.索引.数据字典.以及一些排序.undo操作等等,每个数据库读取或者写入磁盘上的数据,都会产生磁盘IO,可以这么说一个正常业务的数据库系统,80%的性能消耗都与IO有关,相对于网络.CPU.内存等其他硬件的迅猛发展,磁盘的读写速度的发展却相对滞后,这也导致许多业务性能瓶颈集中在有限的磁盘IO

XenServer创建EXT格式的SR的存储是为了支持Provisioning磁盘精简制备功能

xenserver默认安装到本地磁盘,本地磁盘被基于Linux的LVM所管理,在xenserver创建为LVM Typer的本地SR,xenserver在LVM上不支持Thin Provisioning磁盘精简制备功能,如果我们想使用Thin Provisioning功能需要将磁盘格式化为EXT3格式,创建EXT3 Typer的本地SR. EXT3 Typer的本地SR创建方法有两种: 1.在安装xenserver的时候勾选Enable thin provisioning,然后默认装完后本地磁盘

给定N张扑克牌,设计一个洗牌算法

均匀洗牌即可 方法1: #include<stdio.h> #include<stdlib.h> #include<time.h> static int num = 54;//num为纸牌数目 //随机数发生器,产生[n,m)之间的随机数 int getRandNum(int n,int m) { if(n==m) { return n; } else if(n>m) { return -1; } time_t time1; srand(( unsigned in

扑克牌的洗牌实现

自己随便写的,直接贴个代码吧: package poker; import java.io.Serializable; public class Poker implements Serializable { private static final long serialVersionUID = -1531112704784497500L; public static final String[] suit = { "红", "梅", "方",

Java 用LinkdeList实现52张扑克牌

用LinkdeList实现52张扑克牌(不含大小王)的洗牌功能.提示:花色 ,和数字分别用数组存储. import java.util.LinkedList; import java.util.Random; class Poker{ String color;//花色 String num;//数字 public Poker(String color,String num){ this.color = color; this.num = num; } @Override public Stri