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 String toString() {
        // TODO Auto-generated method stub
        return "{"+color+num+"}";
    }
}

public class HomeWork3 {

    /**
     * @param args
     * 用LinkdeList实现52张扑克牌(不含大小王)的洗牌功能。
     * 提示:花色 ,和数字分别用数组存储。
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       // 1.创建扑克牌
        LinkedList list = creatPoker();
        //2.洗牌
        shufflePoker(list);
        //3.显示
        showPoker(list);

        //4.发牌的功能。

    }

    //洗牌的功能
    public static void shufflePoker(LinkedList poker){

        //1.产生一个随机数
        Random rangdom =  new  Random();

        for(int i = 0 ;i<100;i++){

            //随机获取两个索引值:
            int index1 = rangdom.nextInt(poker.size());
            int index2 = rangdom.nextInt(poker.size());
            Poker p1 = (Poker) poker.get(index1);
            Poker p2 = (Poker) poker.get(index2);
            //交换用set方法
            poker.set(index1, p2);
            poker.set(index2, p1);

        }

    }

    public static void showPoker(LinkedList list){

        for(int i = 0;i<list.size();i++){

            System.out.print(list.get(i));
            if( i % 13 == 12){

                System.out.println();
            }

        }

    }

    public static LinkedList creatPoker(){
        //创建集合对象用来存放扑克牌
        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-10 12:28:23

Java 用LinkdeList实现52张扑克牌的相关文章

理解面向对象编程---C#控制台实现52张扑克牌的分法

52张牌随机分给4个玩家,要求每个玩家的牌用一个一维数组表示. 我们采用模拟大法.初始化一副扑克牌,洗牌,发牌. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication43 { class Program { enum Suit { Spade, Heart, Di

华为机试—5张扑克牌的组成

一副牌中发五张扑克牌给你:让你判断数字的组成: 有以下几种情况: 1:四条:即四张一样数值的牌(牌均不论花色) 2:三条带 一对 3:三条带两张不相同数值的牌 4:两对 5:顺子 包括 10,J,Q,K,A 6:什么都不是 7:只有一对. c #include<iostream> #include<string> #include<cstdlib> using namespace std; int cmp(const void *a,const void *b) { r

推断5张扑克牌的组成

一副牌中发五张扑克牌给你,让你推断数字的组成: 有下面几种情况: 1:四条:即四张一样数值的牌(牌均不论花色) 2:三条带一对 3:三条带两张不同样数值的牌 4:两对 5:顺子(包含10,J,Q,K,A) 6:什么都不是 7:仅仅有一对 分析: 应该不包括大小王,另外J.Q.K.A分别相当于11.12.13.14,尽管从2到A一共是13张牌.可是为了方便相应,使用了一个包括15个元素的数组来记录每个点数出现的次数(舍弃0号元素和1号元素). 为了记录发给你的5张牌.直接用整型肯定不行,不能接受J

52张牌

有52张牌,使它们全部正面朝上,从第2张开始,凡是2的倍数位置上的牌翻成正面朝下:接着从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上:接着第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,直到第1张要翻的牌是第52张为止.统计最后有几张牌正面朝上,以及它们的位置号. 1 #include<iostream> 2 using namespace std; 3 int a[1001];// 0正面朝上 4 void f(int n)

判断5张扑克牌的组成

一副牌中发五张扑克牌给你,让你判断数字的组成: 有以下几种情况: 1:四条:即四张一样数值的牌(牌均不论花色) 2:三条带一对 3:三条带两张不相同数值的牌 4:两对 5:顺子(包括10,J,Q,K,A) 6:什么都不是 7:只有一对 分析: 应该不包含大小王,另外J.Q.K.A分别相当于11.12.13.14,虽然从2到A一共是13张牌,但是为了方便对应,使用了一个包含15个元素的数组来记录每一个点数出现的次数(舍弃0号元素和1号元素). 为了记录发给你的5张牌,直接用整型肯定不行,不能接受J

【猜牌问题】甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A、Q、4 黑桃J、8、4、2、7、3 草色K、Q、5、4、6 方块A、5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙。教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌。 乙:我知道你不知道这张牌。 甲:现在我知道这张牌了。 乙:我也知道了。 请问:这张牌是什么牌?

甲乙都知道桌子的抽屉里有16张扑克牌: 红桃A.Q.4 黑桃J.8.4.2.7.3 草色K.Q.5.4.6 方块A.5 教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉甲,把这张牌的花色告诉乙.教授问:你们能推理出是什么牌吗? 甲:我不知道这张牌.乙:我知道你不知道这张牌.甲:现在我知道这张牌了.乙:我也知道了. 请问:这张牌是什么牌? 解: 教授告知甲点数,告知乙花色 人物 已知 未知 甲 A 红桃.方块 Q 红桃.草色 4 红桃.黑桃.草色 J 黑桃 8 黑桃 2 黑桃 7 黑桃 3 黑

贝叶斯公式52张牌猜黑桃A策略

考虑有208平行世界,其中有4个世界(1/52)的黑桃A方在第一张牌的位置,余下204个世界中,有4个世界的黑桃A在第2张牌的位置,4个世界在第3张牌的位置..... 而在这208个世界中玩家都采用猜第x张牌(x>1)的策略即任意一种第一次不猜的策略, 比方x=6即每次都猜第6张牌,那么他获胜的可能性是   4/208= 1/52    等于  52-1/52   * 1/51 即第一张牌不是黑桃A的概率乘以n-1张牌猜中的概率根据归纳法,这个概率是1/n-1  . 貌似P(Victory|no

201671010107 2016-2017-2《Java程序设计》第三张学习心得

通过这章的学习,我了解了Java的基本程序设计结构,也对注释,数据类型,变量,运算符,字符串,输入输出,控制流,大数据等Java的基本知识有了了解,我还学会了用这些基本知识编写一些简单的Java程序.我觉得学习这章我们应该主要抓住Java与C的相同点和不同点.学习这章我的问题是开始时没有重点,把所有的一起看过去,看起来什么都看了,但实际上什么都没有学会,老师问起来感觉自己知道一点,但不能把所有的知识都知道.

【Java面试题】52 java中会存在内存泄漏吗,请简单描述。

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中.Java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉.由于Java 使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的. package com.huawei.interview; import java.io.IOException; public class Garbage