这段代码的主要实现功能扑克牌的洗牌和发牌功能,一副牌,红桃,黑桃,梅花,方片,A~K,不含大小王。

  构造一个class。

  首先是声明花色:

private String[] sign={"方片","红桃","黑桃","梅花"};//扑克的四种花色

  然后是洗牌功能,意味花色与A~K结合构造成顺序的52张扑克牌,构造一个ArrayList对象存储扑克牌的值。

private static ArrayList<String> List;

  接下来再类中实现此方法,构造出一副扑克牌。

public void Init(){
List = new ArrayList();
for(String str:sign){
for(int i = 1;i<=13;i++){
String extra_sign = ""; //将数字与扑克匹配
if(i == 1){
extra_sign = "A";
List.add(str+extra_sign);
}else if(i == 11){
extra_sign = "J";
List.add(str+extra_sign);
}else if(i == 12){
extra_sign = "Q";
List.add(str+extra_sign);
}else if(i == 13){
extra_sign = "K";
List.add(str+extra_sign);
}else{
List.add(str+i);
}
}
}
}

  此时衣服扑克牌已经构造完成,接下来通过方法实现扑克牌的乱序发放到四人的手中。

public void Hands(){
int i = 0,j=0;
Collections.shuffle(List);//Collection类中的shuffle方法将<List>乱序排列
for(String str:List){
if(j == 4)
break;
if(i == 0){
hands[j] = str+" ";
i++;
}
//这里不使用for(i<13){
// hands[j] = str+" ";
// i++;
//}是因为第一个下标为0的元素为null,所以多了一步判断
if(0<i && i<13){
hands[j] +=str+" " ;
i++;
}else{
i = 0;
j++;
}
}
}

  洗牌和分牌步骤已经完成,下面贴上完整代码:

  

package com;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator; public class Pokes { private String[] sign={"方片","红桃","黑桃","梅花"};
private static String[] hands = new String[4];
private static ArrayList<String> List; Pokes(){
} public void Init(){
List = new ArrayList();
for(String str:sign){
for(int i = 1;i<=13;i++){
String extra_sign = "";
if(i == 1){
extra_sign = "A";
List.add(str+extra_sign);
}else if(i == 11){
extra_sign = "J";
List.add(str+extra_sign);
}else if(i == 12){
extra_sign = "Q";
List.add(str+extra_sign);
}else if(i == 13){
extra_sign = "K";
List.add(str+extra_sign);
}else{
List.add(str+i);
}
}
}
} public void Hands(){
int i = 0,j=0;
Collections.shuffle(List);
for(String str:List){
if(j == 4)
break;
if(i == 0){
hands[j] = str+" ";
i++;
}
if(0<i && i<13){
hands[j] +=str+" " ;
i++;
}else{
i = 0;
j++;
}
}
} public static void main(String[] args) {
Pokes p = new Pokes();
p.Init();
p.Hands();
System.out.println(hands[0]);
System.out.println(hands[1]);
System.out.println(hands[2]);
System.out.println(hands[3]); } }

通过debug结果如下:

第一次输出结果:
黑桃2 黑桃2 红桃A 红桃8 黑桃9 黑桃7 梅花4 梅花8 黑桃5 梅花3 红桃10 方片Q 方片K
黑桃6 黑桃6 方片8 红桃4 红桃7 黑桃3 梅花K 红桃J 黑桃J 梅花2 梅花10 红桃Q 方片9
方片A 方片A 梅花Q 黑桃8 梅花J 红桃3 方片3 红桃6 红桃2 方片7 梅花9 红桃5 梅花5
方片6 方片6 梅花A 红桃K 黑桃K 方片10 黑桃A 梅花7 方片J 梅花6 方片5 黑桃10 红桃9
第二次输出结果:
黑桃10 黑桃10 红桃5 黑桃7 方片3 方片Q 红桃8 方片6 梅花5 方片9 方片2 红桃Q 红桃9
黑桃5 黑桃5 黑桃2 红桃2 黑桃K 梅花8 梅花2 黑桃9 红桃7 黑桃8 红桃6 梅花9 黑桃6
红桃10 红桃10 梅花3 黑桃A 梅花10 方片7 方片10 黑桃4 黑桃Q 梅花7 红桃K 黑桃3 红桃3
梅花6 梅花6 梅花A 梅花K 红桃A 梅花J 方片8 红桃J 黑桃J 方片4 方片A 红桃4 方片5

  简单的Java扑克牌程序,初始化构造一副扑克牌,利用Collection.shuffle(<List>)将List中的元素打乱顺序,依次分配给四个String[]。

Java程序设计之扑克牌的更多相关文章

  1. 《Java程序设计》第四章-认识对象

    20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...

  2. 20145314郑凯杰 《Java程序设计》第6周学习总结

    20145314郑凯杰 <Java程序设计>第6周学习总结 教材学习内容总结 本次就不放上每个程序的运行结果了,在下面的问题探究里会写出的.代码托管如下: 第十章 InputStream与 ...

  3. 《Java程序设计》 课程教学

    <Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...

  4. 2016-2017-2 《Java程序设计》教学进程

    2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...

  5. 2016-2017-2 《Java程序设计》预备作业2总结

    2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...

  6. 2016-2017-2 《Java程序设计》预备作业1 总结

    2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...

  7. 2016-2017-2 《Java程序设计》课程学生博客和代码托管链接

    2016-2017-2 <Java程序设计>课程学生博客和代码托管链接 博客 1552 20155201 李卓雯 20155202 张 旭 20155203 杜可欣 20155204 王 ...

  8. 《Java程序设计与数据结构教程(第二版)》学习指导

    <Java程序设计与数据结构教程(第二版)>学习指导 欢迎关注"rocedu"微信公众号(手机上长按二维码) 做中教,做中学,实践中共同进步! 原文地址:http:// ...

  9. 20145208 《Java程序设计》第0周学习总结

    20145208 <Java程序设计>第0周学习总结 阅读心得 读了老师推荐的几个文章,虽然第四个文章"为什么一定要自学"报告资源不存在而无法阅读,其他的三篇文章都言之 ...

随机推荐

  1. MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...

  2. css实现小三角(原理)

    效果图如图1所示:(简单示范,有点丑,莫介意) PS:兼容IE,FF , chrome ,360安全浏览器 先讲下原理吧,如图2所示: 这个div的样式如下所示: div{ width: 0px; h ...

  3. Hibernate总结(三)

    在Hibernate(二)中,简单总结了表与表之间的级联操作,但是并没有总结查询操作,这一篇将总结Hibernate查询所实现的加载策略. 加载策略: 立刻加载:马上去数据库中查询 延迟加载:当使用数 ...

  4. 使用TabPageIndicator的样式问题

    在使用TabPageIndicator往往会出现一些样式问题,导致看不到字,下面是总结的步骤: 1.布局<LinearLayout xmlns:android="http://sche ...

  5. JMeter专题系列(五)检查点

    JMeter也有像LR中的检查点: JMeter里面的检查点通过添加断言来完成. 检查点:我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用t.dat里面的文件呢.当然,我们可以 ...

  6. Combobox的使用

    第一次写博客,只是对自己在工作中遇到的问题进行一次总结回顾,为以后有同样的错误有一个参考: 由于最近空余时间很少,只是零零散散的把平时记录的笔记搬到博客园而已,博客中可能出现一些低级错误,希望互相学习 ...

  7. ajax分页与组合查询配合使用

    使用纯HTML页与js.ajax.Linq实现分页与组合查询的配合使用 <body> <div id="top"><input type=" ...

  8. 认识DOM和一些方法

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  9. 我的Android第五章:通过Intent实现活动与活动之间的交互

    Intent在活动的操作 作用: Itent是Android程序中各个组件直接交换的一个重要方式可以指定当前组件要执行任务同时也可以给各个组件直接进行数据交互              同时Inten ...

  10. scrollWidth,clientWidth,offsetWidth的区别

      通过一个demo测试这三个属性的差别. 说明: scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大. clientWidth:对象内容的可视区的宽度,不包 ...