刘谦龙年春晚魔术模拟
守岁共此时
代码
直接贴代码了,异常处理有点问题,正常流程能跑通
package com.yuhan.snginx.util.chunwan;import java.util.*;/*** @author yuhan* @since 2024/02/10*/
public class CWMS {static String[] num = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};static String[] style = {"♠️", "♥️", "♣️", "♦️"};static String[] wang = {"大王", "小王"};public static List<String> listPoker = new ArrayList<>(54);public static List<String> choose = new ArrayList<>(4);public static HashMap<Integer, String> map = new HashMap<>();static {map.put(1, "南方");map.put(2, "北方");map.put(3, "二家岗子");}public static List<String> getAllPoker() {for (String string : style) {for (String s : num) {listPoker.add(string + s);}}listPoker.add(Arrays.toString(wang));return listPoker;}public static void choosePoker() {String styleIn, numIn;for (int i = 0; i < 4; i++) {System.out.println("\n请选择花色");Scanner scanner = new Scanner(System.in);styleIn = scanner.nextLine();System.out.println("请选择数字");numIn = scanner.nextLine();System.out.println("是否确认选择 ok or any keys");String sc = scanner.nextLine();if (!Objects.equals(sc, "ok")) {return;}while (Objects.isNull(styleIn) || Objects.isNull(numIn)) {System.out.println("输入错误,请重新输入");}String chPoker = styleIn + numIn;while (!listPoker.contains(chPoker)) {System.out.println("花色非法或不存在的数字");}System.out.println("\n 本次选择" + chPoker);choose.add(chPoker);}System.out.println("你选择的扑克分别为:");choose.forEach(System.out::println);}public static void suffer() {System.out.println("\n 请打乱刚刚选择的牌,按ok键进行 !");Scanner scanner = new Scanner(System.in);if ("ok".equalsIgnoreCase(scanner.nextLine())) {System.out.println("\n洗牌前顺序");choose.forEach(s -> System.out.println(s + " "));Collections.shuffle(choose);System.out.println("\n洗牌后顺序");choose.forEach(s -> System.out.println(s + " "));}}public static List<String> push() {System.out.println("请从中间撕碎扑克,按 ok 撕碎 !");Scanner scanner = new Scanner(System.in);if (!"ok".equalsIgnoreCase(scanner.nextLine())) {System.out.println("不撕就别玩,结束了");return choose;}ArrayList<String> result = new ArrayList<>(choose);for (String s : choose) {String str = s + "副本";result.add(str);}result.forEach(System.out::println);return result;}public static void nameSuffer(List<String> push) {System.out.println("请输入你的姓名,名字有几个字,就将最上面的牌放到最下边几次");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();if (Objects.isNull(name)) {System.out.println("姓名为空");return;}for (int i = 0; i < name.length(); i++) {String first = push.get(0);push.remove(0);push.add(first);}}public static void magicTime(List<String> push) {String magic = "见证奇迹的时刻";for (int i = 0; i < magic.length(); i++) {String first = push.get(0);push.remove(0);push.add(first);}}public static void suffer_3(List<String> push, boolean region, int regionChoose) {Random random = new Random();if (region) {regionChoose = (regionChoose < 1 || regionChoose > 3) ? 3 : regionChoose;}// 生成3到5之间的随机数int randomNum = region ? random.nextInt(4 + (3 - regionChoose)) : random.nextInt(4);System.out.println(randomNum);ArrayList<String> third = new ArrayList<>();for (int i = 0; i < 3; i++) {third.add(push.get(i));}
// third.forEach(System.out::println);
// System.out.println("third");if (!region) {push.remove(0);push.remove(0);push.remove(0);} else {for (int i = 0; i < regionChoose; i++) {push.remove(0);}}// push.forEach(System.out::println);
// System.out.println("removed");push.addAll(randomNum + 1, third);}public static String getFirst(List<String> suffered) {return suffered.get(0);}public static int region() {System.out.println("\n 请选择南北方人 ,如果你是南方人请输入 1;如果你是北方人请输入 2; 如果不能确认你是南北方人请输入 3");Scanner scanner = new Scanner(System.in);int i = scanner.nextInt();while (Objects.isNull(map.get(i))) {System.out.println("输入错误,请重新输入 !");i = scanner.nextInt();}System.out.println("你已选择" + map.get(i));return i;}public static void drop(List<String> pushed, int i) {for (int i1 = 0; i1 < i; i1++) {pushed.remove(0);}}public static int chooseSex() {Scanner scanner = new Scanner(System.in);System.out.println("请选择 性别 男:1 女:2");int i = scanner.nextInt();System.out.println(i == 1 ? "男" : "女");return i;}/*** 好运留下来** @param args*/public static void luck(List<String> push) {String first = push.get(0);push.remove(0);System.out.println("好运留下来");push.add(first);System.out.println("烦恼丢出去");push.remove(0);}private static void anyWay(List<String> pushed) {while (pushed.size() > 1) {luck(pushed);}}public static void main(String[] args) {// 获取完整扑克getAllPoker().forEach(t -> System.out.print(" " + t));// 从中选择四张choosePoker();// 打乱suffer();// 撕碎List<String> pushed = push();// namenameSuffer(pushed);// suffer_3suffer_3(pushed, false, 0);// 记住取出的第一张牌String first = getFirst(pushed);// 南北方人选择// 南方北方切牌suffer_3(pushed, true, region());// 男女选择int sex = chooseSex();drop(pushed, sex);// 见证奇迹的时刻magicTime(pushed);// 多来几次anyWay(pushed);// 对比System.out.println("第一张牌" + first);System.out.println("丢完剩下的" + pushed.get(0));}}相关文章:
刘谦龙年春晚魔术模拟
守岁共此时 代码 直接贴代码了,异常处理有点问题,正常流程能跑通 package com.yuhan.snginx.util.chunwan;import java.util.*;/*** author yuhan* since 2024/02/10*/ public class CWMS {static String[] num {"A", "2", &quo…...
re:从0开始的CSS学习之路 9. 盒子水平布局
0. 写在前面 过年也不能停止学习,一停下就难以为继,实属不应 1. 盒子的水平宽度 当一个盒子出现在另一个盒子的内容区时,该盒子的水平宽度“必须”等于父元素内容区的宽度 盒子水平宽度: margin-left border-left padding-lef…...
【MySQL基础】:深入探索DQL数据库查询语言的精髓(上)
🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. DQL1.1 基本语法1.2 基础查询1.3 条件查询1.3 聚合函数 🌤️ 全篇…...
JavaScript实现轮播图方法
效果图 先来看下效果图,嫌麻烦就不用具体图片来实现了,主要是理清思路。(自动轮播,左右按钮切换图片,小圆点切换图片,鼠标移入暂停轮播,鼠标移出继续轮播) HTML 首先是html内容&am…...
Web课程学习笔记--jsonp的原理与简单实现
jsonp的原理与简单实现 原理 由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数&…...
第78讲 修改密码
系统管理实现 修改密码实现 前端 modifyPassword.vue: <template><el-card><el-formref"formRef":model"form":rules"rules"label-width"150px"><el-form-item label"用户名:&quo…...
Docker 容器网络:C++ 客户端 — 服务器应用程序。
一、说明 在下面的文章中, 将向您概述 docker 容器之间的通信。docker 通信的验证将通过运行 C 客户端-服务器应用程序和标准“ping”命令来执行。将构建并运行两个单独的 Docker 映像。 由于我会关注 docker 网络方面,因此不会提供 C 详细信息。…...
Android 识别车牌信息
打开我们心爱的Android Studio 导入需要的资源 gradle //开源车牌识别安卓SDK库implementation("com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3")button.setOnClickListener(v -> {Log.d("Test", "");try (InputStream file getAs…...
C#在窗体正中输出文字以及输出文字的画刷使用
为了在窗体正中输出文字,需要获得输出文字区域的宽和高,这使用MeasureString方法,方法返回值为Size类型; 然后计算输出的起点的x和y坐标,就可以输出了; using System; using System.Collections.Generic; …...
二十、K8S-1-权限管理RBAC详解
目录 k8s RBAC 权限管理详解 一、简介 二、用户分类 1、普通用户 2、ServiceAccount 三、k8s角色&角色绑定 1、授权介绍: 1.1 定义角色: 1.2 绑定角色: 1.3主体(subject) 2、角色(Role和Cluster…...
【PTA|期末复习|编程题】数组相关编程题(一)
目录 7-1 乘法口诀数列 (20分) 输入格式: 输出格式: 输入样例: 输出样例: 样例解释: 代码 7-2 矩阵列平移(20分) 输入格式: 输出格式: 输入样例: 输出样例: …...
[office] 怎么在Excel2003菜单栏自定义一个选项卡 #其他#微信#知识分享
怎么在Excel2003菜单栏自定义一个选项卡 怎么在Excel2003菜单栏自定义一个选项卡 ①启动Excel2003,单击菜单栏--工具--自定义。 ②在自定义界面,我们单击命令标签,在类别中选择新菜单,鼠标左键按住新菜单,拖放到菜单栏…...
面试 JavaScript 框架八股文十问十答第六期
面试 JavaScript 框架八股文十问十答第六期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)use strict是什么…...
【Web】小白友好的Java内存马基础学习笔记
目录 简介 文件马与内存马的比较 文件马原理 内存马原理 内存马使用场景 内存马分类 内存马注入方式 这篇文章主要是概念性的,具体技术细节不做探究,重点在祛魅。 简介 内存马(Memory Shellcode)是一种恶意攻击技术&…...
Rust猜数字游戏
Rust进阶:猜数字游戏 Rust是一门现代的系统级编程语言,注重内存安全、并发性能以及表达力。在这篇博客中,我们将深入介绍一个更加复杂的猜数字游戏代码,展示Rust语言的一些高级特性。 代码示例 以下是一个升级版的Rust猜数字游…...
.gitlab-ci.yml文件参数配置和使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
Go语言从基础到高级-目录
一、编程入门和Go语言简介 什么是编程和为什么要学习编程计算机编程的基本概念Go语言简介为什么选择Go语言 二、设置Go语言开发环境 如何安装Go语言设置环境变量Go语言的工作空间配置 三、Go语言基础 Hello, World!初体验变量和常量数据类型(整数、浮点数、字符…...
Linux CentOS stream 9 alias
alias命令在Linux中用于创建命令别名。它允许用户为常用的命令或命令组合创建短而易记的别名,从而提高工作效率。 alias命令与windows中的快捷方式相同,执行别名时,终端解释器就进行查询与转换,进而执行原来的完整命令。 熟练使用alias命令可以使我们将一长串命令或者一些…...
WebSocketServer+redis实时更新页面数据
redis 实现发布订阅功能具体实现_redis convertandsend-CSDN博客 主要看上面这个 使用redis做websocket分布式消息推送服务_websocket redis-CSDN博客 ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject 的解决办法_java.lang.class…...
快速掌握Vue.js框架:从入门到实战
一、引言 Vue.js,作为一款广受欢迎的渐进式JavaScript框架,以其轻量级、易用性和高效性在前端开发领域占据了一席之地。Vue.js遵循MVVM(Model-View-ViewModel)设计模式,它通过双向数据绑定机制简化了开发者对用户界面与底层数据模型之间关系的处理,使得构建现代Web应用变…...
S32K3 PIT定时器深度解析:从硬件原理到汽车电子实战应用
1. 项目概述:为什么S32K3的PIT如此值得深挖?在嵌入式开发,特别是汽车电子领域,定时器是驱动整个系统心跳的核心外设。当项目标题指向“S32K3的周期性中断定时器(PIT)”时,这绝不仅仅是一个简单的…...
OpenWebUI智能管道:连接本地AI模型与高性能推理后端
1. 项目概述:一个连接OpenWebUI与本地AI模型的智能管道最近在折腾本地大语言模型(LLM)的朋友,估计都绕不开OpenWebUI(原名Ollama WebUI)这个项目。它提供了一个极其美观、功能强大的Web界面,让我…...
电脑自动干活不是梦|OpenClaw小龙虾本地AI智能体Windows部署详细步骤
核心亮点:零代码门槛|全程可视化|无需手动配环境|内置所有依赖|28 万 Tokens 额度 下载地址:OpenClaw Windows 一键部署包 v2.7.5 文章标签:#OpenClaw #小龙虾 AI #本地 AI 智能体 #Windows 一键…...
JDK 17文本块实战:告别繁琐拼接,拥抱多行字符串新写法
1. 为什么我们需要文本块? 如果你写过Java代码,肯定遇到过这样的场景:需要处理多行字符串,比如HTML模板、SQL语句或者JSON数据。在JDK 17之前,我们只能通过字符串拼接的方式来实现,代码看起来就像是一团乱麻…...
别再只会调占空比了!STM32F103驱动L298N电机,PWM模式1和模式2到底怎么选?
STM32F103驱动L298N电机:PWM模式1与模式2的深度实战解析 当你在调试L298N电机驱动模块时,是否遇到过这样的困惑:明明设置了相同的占空比,电机却表现出截然不同的响应特性?这背后往往隐藏着PWM模式选择的奥秘。对于STM3…...
Claude新政,抛弃最忠实的Agent用户
Anthropic 过河拆桥,终将遭反噬。 Anthropic 将 Agent SDK 用量从订阅中剥离,按 API 零售价另给固定额度。重度用户的可用量缩水近十倍。同一周,OpenAI 向企业用户推出 Codex 两个月免费迁移。ASI 决赛圈的第一场定价战,开打了。 …...
林调报告生成慢?文献综述耗时长?NotebookLM林业科研加速器已上线,72小时实测效率提升3.8倍
更多请点击: https://kaifayun.com 第一章:NotebookLM林业科学研究 NotebookLM 是 Google 推出的基于 AI 的研究协作者工具,专为深度阅读与知识整合设计。在林业科学研究中,它可高效处理林学文献、野外调查报告、遥感数据说明书、…...
基于电阻分压网络的传感器复用与蓝牙报警系统设计
1. 项目概述 在物联网和智能家居领域,报警系统是一个经典且实用的入门项目。它不仅是学习嵌入式开发的绝佳起点,更能直接解决现实生活中的安防需求。市面上成熟的商业报警系统往往价格不菲且功能固化,而基于开源硬件和软件的自制方案…...
RAG实战指南:让大模型学会检索外部知识
RAG:给 LLM 装上知识库——从原理到完整可运行系统LLM 的知识截止在训练日期。RAG 让 AI 能「查资料」回答——这是 Agent 有「长期记忆」的基础。一、为什么需要 RAG 用户:HarmonyOS NEXT 的 Observed 装饰器怎么用?没有 RAG 的 LLM…...
2026 及下一阶段 工业 AI 与企业级 Agent 布局
JBoltAI 作为面向企业 Java 技术团队的 AI 应用开发框架,围绕 工业 AI 与企业级 Agent 领域的向量空间应用,明确了 2026 年及下一阶段的核心布局方向,聚焦产业实际需求推进技术落地。工业场景的 AI 落地,核心难点并非技术本身&…...
