Java程序设计之扑克牌
这段代码的主要实现功能扑克牌的洗牌和发牌功能,一副牌,红桃,黑桃,梅花,方片,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程序设计之扑克牌的更多相关文章
- 《Java程序设计》第四章-认识对象
20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...
- 20145314郑凯杰 《Java程序设计》第6周学习总结
20145314郑凯杰 <Java程序设计>第6周学习总结 教材学习内容总结 本次就不放上每个程序的运行结果了,在下面的问题探究里会写出的.代码托管如下: 第十章 InputStream与 ...
- 《Java程序设计》 课程教学
<Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...
- 2016-2017-2 《Java程序设计》教学进程
2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...
- 2016-2017-2 《Java程序设计》预备作业2总结
2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...
- 2016-2017-2 《Java程序设计》预备作业1 总结
2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...
- 2016-2017-2 《Java程序设计》课程学生博客和代码托管链接
2016-2017-2 <Java程序设计>课程学生博客和代码托管链接 博客 1552 20155201 李卓雯 20155202 张 旭 20155203 杜可欣 20155204 王 ...
- 《Java程序设计与数据结构教程(第二版)》学习指导
<Java程序设计与数据结构教程(第二版)>学习指导 欢迎关注"rocedu"微信公众号(手机上长按二维码) 做中教,做中学,实践中共同进步! 原文地址:http:// ...
- 20145208 《Java程序设计》第0周学习总结
20145208 <Java程序设计>第0周学习总结 阅读心得 读了老师推荐的几个文章,虽然第四个文章"为什么一定要自学"报告资源不存在而无法阅读,其他的三篇文章都言之 ...
随机推荐
- 深入研究Java类装载机制
目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...
- 实用SQL语句大全
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- VBoxManage命令
查看有哪些虚拟机VBoxManage list vms 查看虚拟的详细信息VBoxManage list vms –long 查看运行着的虚拟机VBoxManage list runningvms 开 ...
- spring-boot 热部署 intellij IDE
1.使用springloadded插件: 如何使用: a.先在ide里面部署好你的service,( mvn spring-boot:run) b.修改代码, c.command+F9(或build- ...
- Linux(RHEL6.0)下安装GCC
查看系统版本 [root@CP-RHEL proc]# cat /etc/issue Red Hat Enterprise Linux Server release 6.0 (Santiago) Ke ...
- Windows Phone 8.1低功耗蓝牙开发-Nokia Treasure Tag
1. 引言 上一篇文章<Windows 8.1 低功耗蓝牙开发>讲述了如何在Windows 8.1平台上创建低功耗蓝牙应用,并且以TI的Sensor Tag为例,给出了代码步骤和演示.其实 ...
- ORACLE opatch命令学习实践
opatch 是ORACLE开发的用来安装,卸载,检测patch冲突.管理ORACLE所有已经安装的补丁的工具,当然这是一个命令工具.opatch命令工具一般位于$ORACLE_HOME/OPat ...
- ORACLE优化器RBO与CBO介绍总结
RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基 ...
- WebForm(二)——控件和数据库连接方式
一.简单控件 1.Label(作用:显示文字) Web中: <asp:Label ID="Label1" runat="server" Text=&quo ...
- [AlwaysOn Availability Groups]SQL Server错误日志(AG)
SQL Server错误日志(AG) SQL Server错误日志会记录影响AG的时间,比如: 1.和Windows故障转移集群交互 2.可用副本的状态 3.可用数据的状态 4.AG endpoint ...