刘谦2024春晚第二个魔术(扑克牌魔术)的JAVA代码实现

本文介绍了一个使用Java编写的简单魔术程序,通过一系列操作模拟了洗牌过程,展示了如何利用列表和随机数生成器实现见证奇迹的时刻和好运留下来,烦恼丢出去的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.*;

public class LiuQianTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        //1.随机拿出4张牌(按编号模拟),2.对半撕开,堆在一起
        List<Integer> list = new ArrayList<>();
        Collections.addAll(list,1, 2, 3, 4, 1, 2, 3, 4);

        //3.根据名字的字数往下放牌
        String name;
        System.out.println("请输入您的名字:");
        name = sc.nextLine();
        for (int i = 0; i < name.length(); i++) {
            list.add(list.get(0));
            list.remove(0);
        }

        //4.拿起最上面的三张牌并插到中间
        int ran = r.nextInt(3) + 4;
        for (int i = 0; i < 3; i++) {
            list.add(ran, list.get(0));
            list.remove(0);
        }

        //5.把最上面的牌藏起来
        final int result = list.get(0);
        list.remove(0);

        //6.南方人,北方人,或是不确定(1,2,3张牌插到中间)
        System.out.println("请输入您是哪方人:(1.南方人,2.北方人,3.不确定)");
        int time = sc.nextInt();
        for (int i = 0; i < time; i++) {
            list.add(ran, list.get(0));
            list.remove(0);
        }

        //7.扔掉最上面的一张牌(男),或者最上面的两张牌(女)
        System.out.println("请输入您的性别:(1.男,2.女)");
        int sex = sc.nextInt();
        for (int i = 0; i < sex; i++) {
            list.remove(0);
        }

        //8.“见证奇迹的时刻”洗牌,每说一个字就把第一张牌放到最下面
        for (int i = 0; i < 7; i++) {
            list.add(list.get(0));
            list.remove(0);
        }


        //9.“好运留下来,烦恼丢出去”,直到留下最后一张
        while(list.size() != 1) {
            list.add(list.get(0));
            list.remove(0);
            list.remove(0);
        }

        //10.最后留下的牌和藏起来的牌可以拼回完整的一张!
        System.out.println("您剩下的牌为:" + list.get(0));
        System.out.println("您的初始牌为:" + result);

        //System.out.println(list);
    }
}

很有意思的魔术!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值