千家信息网

Java如何实现一个简单的扑克牌魔术

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关Java如何实现一个简单的扑克牌魔术,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言用到了Scanner,for循环,if-else语
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 互联网科技企业 科技服务与互联网 苏州互联网科技贷款公司 奇酷互联网络科技公司 深圳艾佳互联网科技 佰商互联网科技有限公司 科技伦理 互联网公司 新华互联网科技校企合作 山东吉时兔互联网科技有限公司 安控科技rtu产品工业互联网 成都玖崟互联网科技有限公司乐商圈怎么样 中国的互联网科技企业的崛起 广州恒生互联网科技有限 互联网科技与大数据专业 互联网科技扶贫时间 互联网科技年终奖 互联网科技新闻 求路客互联网科技电话 科技发展第三阶段互联网时代 颐高云石互联网科技 科技互联网技术 北京互联网络科技有限公司 金融科技和互联网金融 互联网和高科技公司 小米互联网科技园设置 工业互联网等科技实现智能化赋能 科技互联网行业投资研究 互联网金融运营模式中的金融科技 兰石爱特工业互联网科技分公司 承德科技产业互联网平台
0