用java实现24点游戏

article/2025/10/24 9:48:09

前言

用java实现24点游戏
Welocome to Xiang’s world~
在这里插入图片描述

题目ღ( ´・ᴗ・` )

24点游戏是经典的纸牌益智游戏。
常见游戏规则:
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。
1.程序风格良好(使用自定义注释模板)
2.列出表达式无重复。

分析♥

  1. 算法分析
    ① 随机生成四个数字
    ② 而根据穷举法列出所有有效式子
  2. 概要设计
    在这里插入图片描述

代码♥

/*
从扑克中每次取出4张牌。
使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求:
随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,*/import java.util.Random;public class Main {public static void main(String[] args) {Random random = new Random();int x = random.nextInt(13)+1;int y = random.nextInt(13)+1;int z = random.nextInt(13)+1;int j = random.nextInt(13)+1;System.out.println("随机生成1-13数字:");System.out.println("第一个数字:" + x);System.out.println("第二个数字:" + y);System.out.println("第三个数字:" + z);System.out.println("第四个数字:" + j);System.out.println("可能的结果是:==========");Biao(x,y,z,j);}public static int Biao(int x, int y, int z, int j) {if ((x + y * z) * j == 24)System.out.println("(" + x + "+" + y + "*" + z + ")" + "*" + j + "=24");if ((x * y - z) * j == 24)System.out.println("(" + x + "*" + y + "-" + z + ")" + "*" + j + "=24");if ((x * y) + z + j == 24)System.out.println("(" + x + "*" + y + ")+" + z + "+" + j + "=24");if ((x / y - z) * j == 24)System.out.println("(" + x + "/" + y + "-" + z + ")" + "*" + j + "=24");if ((x - (y - z)) * j == 24)System.out.println("(" + x + "-" + "(" + y + "-" + z + ")" + ")*" + j + "=24");if (x * y - z + j == 24)System.out.println(x + "*" + y + "-" + z + "+" + j + "=24");if ((x - y) * z * j == 24)System.out.println("(" + x + "-" + y + ")" + "*" + z + "*" + j + "=24");if ((x * y) + (z * j) == 24)System.out.println("(" + x + "*" + y + ")+(" + z + "*" + j + ")" + "=24");if ((x + y) * z * j == 24)System.out.println("(" + x + "+" + y + ")" + "*" + z + "*" + j + ")" + "=24");if (x * y * z * j == 24)System.out.println(x + "*" + y + "*" + z + "*" + j + "=24");if (x - (y - z - j) == 24)System.out.println(x + "-" + "(" + y + "-" + z + "-" + j + ")" + "=24");if (x + y - (z - j) == 24)System.out.println(x + "+" + y + "-" + "(" + z + "-" + j + ")" + "=24" + "\n");if (x * (y / z - j) == 24)System.out.println(x + "*" + "(" + y + "/" + z + "-" + j + ")" + "=24");if ((x - y * z) * j == 24)System.out.println("(" + x + "-" + y + "*" + z + ")" + "*" + j + "=24");if (x * (y - z) + j == 24)System.out.println(x + "*" + "(" + y + "-" + z + ")" + "+" + j + "=24");if (x + y + z / j == 24)System.out.println(x + "+" + y + "+" + z + "/" + j + "=24");if ((x - y) * (z - j) == 24)System.out.println("(" + x + "-" + y + ")*(" + z + "-" + j + ")=24");if ((x + y) * z / j == 24)System.out.println("(" + x + "+" + y + ")*" + z + "/" + j + "=24");if (x * y / (z - j) == 24)System.out.println(x + "*" + y + "/" + "(" + z + "-" + j + ")" + "=24");if ((x + y) * (z + j) == 24)System.out.println("(" + x + "+" + y + ")*(" + z + "+" + j + ")=24");if ((x - y) * z / j == 24)System.out.println("(" + x + "-" + y + ")*" + z + "/" + j + "=24");if ((x * y - z) / j == 24)System.out.println("(" + x + "*" + y + "-" + z + ")" + "/" + j + "=24");if ((x + y) / z + j == 24)System.out.println("(" + x + "+" + y + "/" + z + "+" + j + "=24");if ((x * y) + z - j == 24)System.out.println("(" + x + "*" + y + ")+" + z + "-" + j + "=24");if ((x / y) + z + j == 24)System.out.println("(" + x + "/" + y + ")" + "+" + z + "+" + j + "=24");if ((x / y + z) * j == 24)System.out.println("(" + x + "/" + y + "+" + z + ")" + "*" + j + "=24");if ((x * y) / z / j == 24)System.out.println("(" + x + "*" + y + ")/" + z + "/" + j + "=24");if (x + y + z - j == 24)System.out.println(x + "+" + y + "+" + z + "-" + j + "=24");if ((x * y) / z + j == 24)System.out.println("(" + x + "*" + y + ")/" + z + "+" + j + "=24");if ((x + y - z) * j == 24)System.out.println("(" + x + "+" + y + "-" + z + ")*" + j + "=24");if ((x * y) - (z - j) == 24)System.out.println("(" + x + "*" + y + ")-(" + z + "-" + j + ")" + "=24");if ((x * y) - (z + j) == 24)System.out.println("(" + x + "*" + y + ")-(" + z + "+" + j + ")" + "=24");if ((x - y - z) * j == 24)System.out.println("(" + x + "-" + y + "-" + z + ")*" + j + "=24");if (x / (y / z - j) == 24)System.out.println(x + "/(" + y + "/" + z + "-" + j + ")=24");if ((x * y) - (z * j) == 24)System.out.println("(" + x + "*" + y + ")-(" + z + "*" + j + ")" + "=24");if (((x + y) * z) / j == 24)System.out.println("((" + x + y + ")*" + z + ")/" + j + "=24");if (x - (y - z) + j == 24)System.out.println(x + "-" + "(" + y + "-" + z + ")" + "+" + j + "=24");if (x + (y + z) / j == 24)System.out.println(x + "+" + "(" + y + "+" + z + ")" + "/" + j + "=24");if (x * y / (z + j) == 24)System.out.println(x + "*" + y + "/" + "(" + z + "+" + j + ")" + "=24");if ((x + y) * z / j == 24)System.out.println("(" + x + "+" + y + ")*" + z + "/" + j + "=24");if ((x * y + z) * j == 24)System.out.println("(" + x + "*" + y + "+" + z + ")" + "*" + j + "=24");if (x / (y - z / j) == 24)System.out.println(x + "/" + "(" + y + "-" + z + "/" + j + ")" + "=24");if (x + (y - z) * j == 24)System.out.println(x + "+" + "(" + y + "-" + z + ")*" + j + "=24");if ((x + y + z) * j == 24)System.out.println("(" + x + "+" + y + "+" + z + ")*" + j + "=24");if (x + y * z - j == 24)System.out.println(x + "+" + y + "*" + z + "-" + j + "=24");if (x * y - z / j == 24)System.out.println(x + "*" + y + "-" + z + "/" + j + "=24");if ((x + y) * z - j == 24)System.out.println("(" + x + "+" + y + ")" + "*" + z + "-" + j + "=24");if ((x - y / z) * j == 24)System.out.println("(" + x + "-" + y + "/" + z + ")*" + j + "=24");if (x * (y + z) + j == 24)System.out.println(x + "*" + "(" + y + "+" + z + ")" + "+" + j + "=24");if ((x * y) + (z / j) == 24)System.out.println("(" + x + "*" + y + ")+(" + z + "/" + j + ")" + "=24");if ((x * y) / z - j == 24)System.out.println("(" + x + "*" + y + ")/" + z + "-" + j + "=24");if ((x + y / z) * j == 24)System.out.println("(" + x + "+" + y + "/" + z + ")*" + j + "=24");if ((x * y * z) / j == 24)System.out.println("(" + x + "*" + y + "*" + z + ")/" + j + "=24");if ((x + y * z) / j == 24)System.out.println("(" + x + "+" + y + "*" + z + ")/" + j + "=24");if (x + (y * z) + j == 24)System.out.println(x + "+" + "(" + y + "*" + z + ")+" + j + "=24");if (x - (y + z) * j == 24)System.out.println(x + "-(" + y + "+" + z + ")*" + j + "=24");if (x - (y - z) * j == 24)System.out.println(x + "-(" + y + "-" + z + ")*" + j + "=24");if ((x * y) - z - j == 24)System.out.println("(" + x + "*" + y + ")-" + z + "-" + j + "=24");if (x + y / z + j == 24)System.out.println(x + "+" + y + "/" + z + "+" + j + "=24");if ((x - y) * z - j == 24)System.out.println("(" + x + "-" + y + "*" + z + "-" + j + "=24");if ((x * y) * z - j == 24)System.out.println("(" + x + "*" + y + ")*(" + z + ")-" + j + "=24");if ((x * y + z) / j == 24)System.out.println("(" + x + "*" + y + "+" + z + ")/" + j + "=24");if (x + y + z * j == 24)System.out.println(x + "+" + y + "+" + z + "*" + j + "=24");if (x * (y - z) / j == 24)System.out.println(x + "*" + "(" + y + "-" + z + ")/" + j + "=24");if (x / y * z + j == 24)System.out.println(x + "/" + y + "*" + z + "+" + j + "=24");if (x + y * z * j == 24)System.out.println(x + "+" + y + "*" + z + "*" + j + "=24");if (x + y + z + j == 24)System.out.println(x + "+" + y + "+" + z + "+" + j + "=24");if ((x * y) / (z * j) == 24)System.out.println("(" + x + "*" + y + ")/(" + z + "*" + j + ")" + "=24");if (x + (y + z) * j == 24)System.out.println(x + "+(" + y + "+" + z + ")*" + j + "=24");if ((x - y) * z + j == 24)System.out.println("(" + x + "-" + y + ")" + "*" + z + "+" + j + "=24");if ((x + y + z) / j == 24)System.out.println("(" + x + "+" + y + "+" + z + ")/" + j + "=24");if ((x + y) * z + j == 24)System.out.println("(" + x + "+" + y + ")*" + z + "+" + j + "=24");return 0;}
}

测试

测试没有符合的式子
在这里插入图片描述
测试又符合的式子:
在这里插入图片描述

调试

发现生成随机数字里有0

在这里插入图片描述
在这里插入图片描述

改正方式:查阅资料后发现Random.nextInt(int bound),的区间范围是[0,bound)

在这里插入图片描述

心得体会

解决思路:首先我们应该了解穷举法,所谓穷举法通俗意义上来说就是,列举出所有有可能的情况,在筛选出有效的情况。枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。
步骤总结:
首先随机生成4个数字,然后调用有效数字函数,找出适合的式子


http://chatgpt.dhexx.cn/article/4hFvpWSj.shtml

相关文章

C++ 实现计算24点

原理 暴力枚举所有的情况,运算符号4个,加减乘除 - * / ,整数数字4个(易扩展为5个数或者更多)。所需要枚举的次数: 数字顺序:4个数的全排列,4! 24。运算符号:4个数需要…

计算机上的24点游戏怎么玩,趣味算数二十四点游戏规则怎么玩技巧

概述:这是一个算数游戏,用四张牌计算得出24。 时间:20分钟 人数:集体参与 目的:锻炼学员的快速计算能力。 道具:扑克牌 步骤: 1.去点大小王,“K”计13点,“Q”计12点&…

【编程|二十四点】关于编程解决二十四点的两种思路

【编程心得系列*24点】 写在前面:编程心得系列不谈具体问题的代码,只谈解决思路。 这是一个关于二十四点的软件。属于典型的先有目的再有初衷的软件。 在此之前我倒是写过一个解数独的软件。但那个的核心代码部分毕竟是抄袭的。这次是觉得对自己更有信…

计算机二十四点游戏怎么玩,扑克牌二十四点怎么玩?扑克牌二十四点游戏规则介绍...

扑克牌二十四点是在国际上很流行的一种扑克游戏玩法,因为游戏计算性较强,较为考验的玩家的心算能力,所以很受扑克玩家的喜爱,那么扑克牌二十四点到底是怎么玩的呢?扑克牌二十四点的游戏规则又是什么呢?下面…

CCF计算机软件能力认证试题练习:201903-2 二十四点

二十四点 来源:CCF 标签: 参考资料: 相似题目: 背景 二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4张纸牌上数字的运算结果为 24。 题目 定义每一个游戏由 4 个从 1-9 的数字和 3 个四则运…

asdasdas

asdasdasdsadassad 阅读全文: http://gitbook.cn/gitchat/activity/5d634f8c5cbc425420e0e72f 您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

dsada

图2.2 www.sina.com网站系统采用的基本上就是图2.2所示的架构,不同地区的人们在访问www.sina.com站点时,浏览器实际上所访问的服务器是不一样的,例如,吉林省的用户访问的服务器实际是sina放在吉林地区的代理服务器,湖北…

Asdasd

这里写阿阿萨德斯达四大自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义…

dsa-基础

算法与数据结构 0.概念数据结构复杂度时间复杂度空间复杂度 1. 线性表顺序表(数组)链表单链表双链表循环链表静态链表 顺序表/链表栈顺序栈链式栈 队列顺序循环队列链表队列双端队列 2. 递归递归与栈阶乘例子 3. 矩阵对称矩阵三角矩阵稀疏矩阵 4. 字符串 0.概念 数据结构 逻辑…

dsadas

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

DSDA 简介

参考link:千呼万唤,5G双卡双通到底有多重要?__财经头条 (sina.com.cn)

Java 排序算法:折半插入排序

有关排序的基本内容可以查看以下链接: 折半插入排序_360百科折半插入排序,折半插入排序(Binary Insertion Sort)是对插入排序算法的一种改进。所谓插入排序,就是不断的依次将元素插入前面已排好序的序列中。https://baike.so.com/doc/7028767-7251672.h…

Java排序算法——猴子排序(Bogo Sort)

此排序和之前介绍的三种排序没有任何关系,只是单纯在整理排序算法突然想到曾经看到过关于此排序的描述,现在总结一下。 之前三种排序的传送门开一下: 冒泡排序: Java排序算法——冒泡排序(Bubble Sort)ht…

java排序算法精讲

排序算法 概要一、冒泡排序概念实现步骤 代码 二、选择排序概念实现步骤 代码 三、插入排序概念实现步骤 代码 四、快速排序概念实现步骤 代码 五、归并排序概念实现步骤 代码 六、堆排序概念实现步骤 代码 总结以二维表表现出各个排序的关系 概要 Java是一种面向对象的编程语言…

Java排序算法(一):冒泡排序

冒泡排序 一、原理二、排序步骤三、实现代码四、复杂度分析 一、原理 冒泡排序是相邻的元素两两比较,把小的元素往前调或者把大的元素往后调,实现最大(小)值排列在一端。 注:相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法 …

十大经典排序算法(Java实现)

排序算法的重要性不言而喻,为了加深对这十种算法的理解,固写此文。 目录 1、冒泡排序(Bubble Sort)2、选择排序(Selection Sort)3、插入排序(Insertion Sort)4、希尔排序&#xff0…

Java排序算法——插入排序(Insertion Sort)

之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法——冒泡排序(Bubble Sort)https://blog.csdn.net/babbfqb93/article/details/…

Java排序算法——冒泡排序(Bubble Sort)

冒泡排序是所有排序算法中最简单的一个排序,也是我个人学习的第一个排序方法,在这里重新进行一个总结。 冒泡排序(Bubble Sort)就如同其名称一样,水中的气泡由于压强的原因所以从下到上其大小也是从小到大&#xff0c…