java实验4 发牌程序_是zg啊!的博客-程序员秘密_发牌程序java

技术标签: Java  java  实验  

题目类别: 实验

关键字: 掌握Java数组、方法的基本定义

内容要求:

  1. 编写程序,项目名和类名均为PokerGame。
  2. 实现功能:
    (1) 共有m幅扑克牌,每幅扑克牌不包括大王和小王共52张牌。
    (2) 可能有n个人参与扑克游戏,2<=n<=52。
    (3) 程序运行时输入扑克牌幅数m和人数n,然后所有牌分别依次分发给n个人。不能整除时,每个人的牌数可以不同,如3个人1幅牌,则第1个人18张,第2个和第3个人17张牌。
    (4) 发牌完成后按花色(顺序为黑桃、红心、草花、方块)和牌面大小输出每个人得到的牌。

例如:

输入扑克牌幅数:1
输入人数:3
输出如下:

第1个人:
    黑桃:K 10 5 A
    红心:10 3 2
    草花:K 10 8 6 3 A
    方块:Q J 5 2
第2个人:
    ……
第3个人:
    ……

  1. 实现要求:
    (1) 使用数组存放发牌情况。
    (2) 编写不同方法完成不同功能。

备注

提交:打包为可以执行的JAR文档,其中要包含源程序文件。

实现代码:

package PokerGamePakage;

import java.util.*;

public class PokerGame {
    

    public static void main(String[] args) {
    

        Scanner sc=new Scanner(System.in);
        System.out.print("输入扑克牌副数:");
        int m=sc.nextInt();
        System.out.print("输入人数:");
        int n=sc.nextInt();
        sc.close();//   eclipse下添加此句,以防报错
        Random random=new Random();
        int [] numbers={
    1,2,3,4,5,6,7,8,9,10,11,12,13};	
        String [] colours={
    "     黑桃:","     红心:","     草花:","     方块:"};
        int [] index=new int[m*52];
        for(int i=0,count=0;i<m;i++){
    
            for(int j=0;j<52;j++){
    
                index[count++]=j;
            }
        }
        int j;
        //  随机洗牌
        for(int i=m*52-1;i>=0;i--){
    
            j=random.nextInt(i+1);
            //交换
            index[i]=index[i]+index[j]-(index[j]=index[i]);
        }
        int k=m*52/n;
        int f=m*52%n;
        for(int i=1,s=0;i<=n;i++,s++){
    
            if(s>f) s=f;
            System.out.println("第"+i+"个人:");
            for(int l=0;l<4;l++){
    
                System.out.print(colours[l]);
                ArrayList<Integer> list=new ArrayList<>();
                for(int h = (i-1)*k+s; h<i*k+(Math.min(s + 1, f)); h++){
    
                    if(index[h]%4==l){
    
                       list.add(numbers[index[h]/4]);
                    }
                }
                list.sort((o1, o2) -> o2 - o1); //降序排序
                for(int w=0;w<list.size();w++){
    
                    if(list.get(w)==1) System.out.print("A ");
                    else if(list.get(w)==11) System.out.print("J ");
                    else if(list.get(w)==12) System.out.print("Q ");
                    else if(list.get(w)==13) System.out.print("K ");
                    else System.out.print(list.get(w)+" ");
                    if(w==list.size()-1) System.out.println();
                }
            }
        }
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BitcoinR/article/details/110123390

智能推荐

C语言快速排序函数qsort_qq_38191717的博客-程序员资料

快速排序库函数qsort的函数原型     void qsort(void *a,int nelem,unsigned int width,int(*pfCompare)(const void* e1,const void* e2));依次是  要排序数组的首地址     元素个数    元素的字节    比较的函数#includeint Compare(const void* e1,

如何保存token-localStorage存储_大浪淘沙胡的博客-程序员资料_localstorage存储token

1、原理原理是通过vue-router的beforeEach钩子,在每次路由到一个地址的时候先判断该路由是否携带了meta信息,且该信息中的requireAuth是否为true,如果为true表示该路由是需要身份验证的。则去localStorage找token,若token不存在则表示用户无认证,去登录请求token。若token存在则拿着token去请求。2、token保存login.vu...

python爬虫实战(九) B站热门视频信息爬取(复杂版)| scrapy+selenium组合爬取_皖渝的博客-程序员资料

目录一、scrapy基本介绍二、爬虫分析三、各部分代码一、scrapy基本介绍二、爬虫分析三、各部分代码

flutter小记(3)_qq_44592406的博客-程序员资料

RangeError (index): Invalid value: Valid value range is empty: 0用data.isNotEmpty或者isEmpty改正

IntelliJ IDEA 2017.2.2 永久破解方法_请叫我大虾的博客-程序员资料

转载自: https://blog.csdn.net/qq_37074004/article/details/85618788第一步:下载破解文件JetbrainsCrack-2.6.10-release-enc.jar下载链接:https://pan.baidu.com/s/1k-iCIXZtg057yN3sMBkJVw 提取码:pr0u下载完成后,进入到In...

z-stac配置按键_luke.woo的博客-程序员资料

按键的定义一般有两种,开关和摇杆。这里只讨论开关的定义。根据硬件在hal_board_cfg.h中定义在hal_key.h中定义宏位在hal_key.c中需要初始化相关寄存器附录:hal_board_cfg.h/************************************************************************************************** Filename: hal_board_cfg.h Revi

随便推点

javascript中onclick(this)用法和onclick(this.value)用法介绍_只在朝暮间的博客-程序员资料_onclick(this)

onclick(this.value)代码详解<html> <head> <script language="javascript"> function test(value){ if(value=='1') { alert("11111111"); }else{ alert

通过公式计算圆周率_Arrogant_95的博客-程序员资料

’ 计算pi的值 ’ # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, …# step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1.# step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...# step 4: 求和: 函数先声明符号以及和(s),通过itertools生成一串数列,限制

完成端口教程_茶向的博客-程序员资料

http://wenku.baidu.com/view/6197a98ecc22bcd126ff0c7b.htmlhttp://wenku.baidu.com/view/9743f92758fb770bf78a5515.html高伸缩性的应用的一个原则:1.      创建更少的线程消耗的资源少,每个线程会存储用户栈,线程上下文,内核栈等信息。线程多占用cpu的调度,线程多会造

ES6学习笔记——默认函数,箭头函数,剩余函数_一个程序媛。的博客-程序员资料

1.默认函数例1:结果:welcome代码解释:当a,b没有传值的时候,默认a='欢迎',b='mmr',当参数传的值是' ',也是传了值的。例2:结果:0 0代码解释:{x=0,y=0}={} 解构赋值的结果 0 0 作为函数的参数2. 函数参数默认已经定义了,不能再用let const 再定义例3:如下代码会报错3.扩展运算符,剩余运算符(即...)例4:结果:代码解释: ...意思是将...

axure8屏幕滚动_Axure9原型教程:Axure实现滚动效果(小技巧:隐藏滚动条)_安心小鱼的博客-程序员资料

axure推出axure 9 正式版本 ,支持黑暗模式,完美契合国内晚上加班的产品同学们,哈哈哈!!!不过目前感觉很多同学都是在用8,所以这次我以8为例,给大家演示一下如果做屏幕上下滚动的原型。其实8和9相差不大,道理是相通的,大家仔细琢磨一下就可以了,还是不了解的,私我私我私我~支持web端、APP、小程序设计,很奈斯下面进入正题:1.例如:首先我们创建一个APP或模板(这里是为了好看哈哈哈),...

Redis进击(二)搭建Redis主从复制服务集群(一主两从、反客为主)【Windows环境】_有时有味的博客-程序员资料

楔子:某个时间,由于不清不楚的某些原因,导致了一次严重的线上事故。后来,开发不清不楚的配合把项目升级到了 Redis高可用集群的哨兵模式(Redis-Sentinel),再后来,我们逐渐的又不清不楚的淡忘了这件事。节点化的工作很容易导致一定程度上只知其然而不知其所以然,这是项目开发中的一个众相。回想起来,我还是想记点什么。该篇可以为以下应用场景提供解决方案:读写分离场景:其中主节点以...

推荐文章

热门文章

相关标签