Java如何实现一个简单的扑克牌魔术
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关Java如何实现一个简单的扑克牌魔术,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言用到了Scanner,for循环,if-else语
千家信息网最后更新 2025年11月07日Java如何实现一个简单的扑克牌魔术
这篇文章将为大家详细讲解有关Java如何实现一个简单的扑克牌魔术,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
前言
用到了Scanner,for循环,if-else语句,集合,线程的Thread.sleep()方法
代码
import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class CardMagic { public static void main(String[] args) { //1.准备54张牌 //新建一个集合存储54张牌并打乱顺序 ArrayList pokers = new ArrayList<>(); //直接定义两个数组并赋值,一个存四种花色,一个存13张牌的值(3,4,5,6,7,8,9,10,J,Q,K,A,2) String[] kind = {"♥","♠","♦","♣"}; String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; //先存大王小王到pokers集合中 pokers.add("大王"); pokers.add("小王"); //组装两个集合的数据,生成带花色的52张牌(可以用普通for循环,也可以用增强for循环foreach) for (int i = 0; i < kind.length; i+ +) { for (int j = 0; j < 13; j++) { pokers.add(kind[i]+number[j]); } } System.out.println("这里有54张牌:"+pokers);//顺序打印 //洗牌--打乱pokers集合里的元素顺序 Collections.shuffle(pokers);//打乱顺序 //再新建一个集合,用来存储随机拿出的21张牌(伪随机:其实是拿出前21张牌,但是pokers集合是随机打乱顺序的,所以每次运行程序,拿出的前21张牌也就不一样且乱序了) ArrayList list21 = new ArrayList<>(); for (int i = 0; i < 21; i++) { list21.add(pokers.get(i)); } //打印出这21张牌 System.out.println("随机取出21张扑克牌并打乱顺序:"); System.out.println(list21); System.out.println("请选择任意一张扑克牌,并记住它。【输入小写字母'y'继续,输入其他任意字符结束游戏!】"); Scanner scanner1 = new Scanner(System.in); if (scanner1.nextLine().equals("y")){ System.out.println("系统将这21张扑克牌均分为3叠,请等待..."); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } }else { System.exit(-1); } //定义3个集合,每个集合存储7张牌 ArrayList card1 = new ArrayList<>(); ArrayList card2 = new ArrayList<>(); ArrayList card3 = new ArrayList<>(); for (int i = 0; i < 7; i++) { card1.add(list21.get(i)); } for (int i = 7; i < 14; i++) { card2.add(list21.get(i)); } for (int i = 14; i < 21; i++) { card3.add(list21.get(i)); } System.out.println("第1叠:"+card1); System.out.println("第2叠:"+card2); System.out.println("第3叠:"+card3); //判断输入 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Scanner scanner2 = new Scanner(System.in); System.out.println("请告诉我你记住的牌在第几叠~如果在第1叠请输入数字1;如果在第2叠请输入数字2;如果在第3叠请输入数字3"); System.out.println("请输入:"); //新建3个数组,分3次重新存重新按指定规则排序的21张牌 ArrayList list21New1 = new ArrayList<>(); int a = scanner2.nextInt(); if (a==1){ for (int i = 0; i < 7; i++) { list21New1.add(card2.get(i)); } for (int i = 0; i < 7; i++) { list21New1.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New1.add(card3.get(i)); } }else if (a==2){ for (int i = 0; i < 7; i++) { list21New1.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New1.add(card2.get(i)); } for (int i = 0; i < 7; i++) { list21New1.add(card3.get(i)); } }else { for (int i = 0; i < 7; i++) { list21New1.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New1.add(card3.get(i)); } for (int i = 0; i < 7; i++) { list21New1.add(card2.get(i)); } } card1.clear(); card2.clear(); card3.clear(); for (int i = 0; i < 21; i++) { card1.add(list21New1.get(i)); i++; card2.add(list21New1.get(i)); i++; card3.add(list21New1.get(i)); } System.out.println("第1叠:"+card1); System.out.println("第2叠:"+card2); System.out.println("第3叠:"+card3); //判断输入 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Scanner scanner3 = new Scanner(System.in); System.out.println("请告诉我你记住的牌在第几叠~如果在第1叠请输入数字1;如果在第2叠请输入数字2;如果在第3叠请输入数字3"); System.out.println("请输入:"); int b = scanner3.nextInt(); //新建3个数组,分3次重新存重新按指定规则排序的21张牌 ArrayList list21New2 = new ArrayList<>(); if (b==1){ for (int i = 0; i < 7; i++) { list21New2.add(card2.get(i)); } for (int i = 0; i < 7; i++) { list21New2.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New2.add(card3.get(i)); } }else if (b==2){ for (int i = 0; i < 7; i++) { list21New2.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New2.add(card2.get(i)); } for (int i = 0; i < 7; i++) { list21New2.add(card3.get(i)); } }else { for (int i = 0; i < 7; i++) { list21New2.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New2.add(card3.get(i)); } for (int i = 0; i < 7; i++) { list21New2.add(card2.get(i)); } } card1.clear(); card2.clear(); card3.clear(); for (int i = 0; i < 21; i++) { card1.add(list21New2.get(i)); i++; card2.add(list21New2.get(i)); i++; card3.add(list21New2.get(i)); } System.out.println("第1叠:"+card1); System.out.println("第2叠:"+card2); System.out.println("第3叠:"+card3); //判断输入 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Scanner scanner4 = new Scanner(System.in); System.out.println("请告诉我你记住的牌在第几叠~如果在第1叠请输入数字1;如果在第2叠请输入数字2;如果在第3叠请输入数字3"); System.out.println("请输入:"); //新建3个数组,分3次重新存重新按指定规则排序的21张牌 ArrayList list21New3 = new ArrayList<>(); int c = scanner2.nextInt(); if (c==1){ for (int i = 0; i < 7; i++) { list21New3.add(card2.get(i)); } for (int i = 0; i < 7; i++) { list21New3.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New3.add(card3.get(i)); } }else if (c==2){ for (int i = 0; i < 7; i++) { list21New3.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New3.add(card2.get(i)); } for (int i = 0; i < 7; i++) { list21New3.add(card3.get(i)); } }else { for (int i = 0; i < 7; i++) { list21New3.add(card1.get(i)); } for (int i = 0; i < 7; i++) { list21New3.add(card3.get(i)); } for (int i = 0; i < 7; i++) { list21New3.add(card2.get(i)); } } System.out.println("好了,稍等片刻!让我猜猜你记住的是什么牌......"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("真相永远只有一个,你选的牌是"+list21New3.get(10)+"!"); System.out.println("什么?你说我是运气好?不!这是"魔法"!"); }} 关于"Java如何实现一个简单的扑克牌魔术"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
输入
数字
顺序
扑克
扑克牌
个数
篇文章
规则
存储
循环
排序
魔术
两个
大王
更多
小王
不错
实用
普通
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
王者一直服务器繁忙
网络安全管理局新闻
软件开发工程师转行哪个最好
警告服务器位于美国
免费视觉软件开发包下载
达鑫网络技术有限公司
农业部花卉产销数据库怎么查
网络安全在公司做什么工作
数据库管理器怎么设置
福建长乐网络技术有限公司
软件开发制作服务合同
管家婆怎么收缩数据库
元数据库技术规范
merops数据库使用方法
软件开发外包的职业前景
安恒数据库审计系统FQA
如何实时获取数据库更新
关键词钢琴谱软件开发
黄冈靠谱的软件开发方案
失效模式数据库建立
服务器usb端口禁用怎么解决
湖北质量软件开发售后保障
计算机网络技术尔雅20
ipfs存储服务器要怎么销售
校园网络安全海报素材
广西米付网络技术有限公司
徐州云服务器供应商
对软件开发的鼓励
网络安全从业资质 是什么
泰拉服务器咋保存