在Java中制作一个彩票程序
我想知道,我需要看看如何使一个可以从Excel文件读取的程序破解
我正在考虑制作一个使用Excel电子表格的程序并读取它们,并生成尚未发生的组合列表
它只是为了一点乐趣,但可能是一个很好的challenege
谢谢
将Excel数据导入Java的直接途径当然是POI 。 非常稳定,优秀的图书馆,并让您进入和Excel的低级内部工作。
值得注意的是繁忙的POI开发者指南 ,这应该有助于缓解一些最初的痛苦。
如果你对学习POI和简单的Java练习更感兴趣,那么这听起来很公平。 更有趣的问题将是如何显示数百万个尚未发生的组合,以及如何从数据结构的angular度来解决这个问题(提示:混合使用散列表查找和生成来保持内存开销最小值)。
如果你想认真对待这个问题,问问自己一个Excel文件是否是这种数据的良好存储机制。 这真的是你在做什么:使用Excel作为数据存储。 有更好的select。
如果您必须使用Excel,那么Andy Khan的JExcel是最好的select。 我发现它远远优于POI。
就我个人而言,我不知道它在这里买什么。 您可以在平面文件中生成所有组合,或者在需要时使用真实数据库。 除了熟悉和无处不在之外,Excel的绘图又是什么?
为什么要走Excel路线呢?
如果要在Java中获得一些乐趣并玩耍,Excel必须有一些方法来从数据中生成一个以逗号分隔的文件。 只要阅读,做任何你想做的事情。
这里有一篇文章可能会帮助你…
用Java读取MS Excel文件
正如其他人所说,有几个图书馆和几个职位可供您开始使用。 我只是想给你两个方法来实现你的目标。
对于“生成还没有发生的组合列表”的情况,
我明白这个目标,因为你有一个抽签的历史,你想要产生一堆从未发生过的随机数集。 基本上你需要第一个随机数字发生器,并生成彩票号码。 然后把这组数字,并尝试在历史数据中find它。 如果你find了,只需重新开始并生成一个新的。 基于我对这个问题的评论,你实际上有机会可以说(5200 / 47M),你可以在历史列表中find你的数字。 重复这整个过程,直到你得到足够的数字。
对于“生成已经发生的组合列表”的情况
你基本上需要在历史列表中find重复项。 从每个历史事件中创build一个Set<Integer>
,并开始将其添加到另一组Set<Set<Integer>>
。 如果在处理过程中已经添加了您添加的数字集,则会从后一个集的add
方法中得到错误的返回值。 然后你只是打印或记住重复的数字集。
使用逗号分隔的文件而不是本机Excel文件。 会让你的生活更容易:)