【发布时间】:2012-03-22 09:34:27
【问题描述】:
我的家庭作业有问题。我不要求任何代码。我所要求的只是一些关于如何实施任务的某些部分的建议。
分配如下:N 名玩家(n 由用户指定)和一个带有字母的“盒子”(A-Z,未指定的字母数量或问题中所述:无限制)。每个字母都有一个索引。 A=0,B=1,..,Z=25。 每个玩家都会收到一封随机的信件。第一个形成大小为 p >= 3(p 由用户给出)的单词的玩家具有以下属性:字母的索引应该是等差数列。例如,如果 p=3,则 ABC 或 ZXV 是获胜组合。
程序应该在每次迭代中显示每个玩家的字母。当一名玩家获胜时,程序应显示获胜的玩家和获胜的单词。
建议是:使用 Math.random() 和 StringBuilder 处理字符串。
我认为该程序的入口点的方式是要求用户提供玩家数量。之后我应该生成 N 个对象(给定一个 Player 类)。第一个愚蠢的问题:我如何生成 N 个对象。类似的东西:
for (int i = 0 ; i < n ; i++) {
Player player1 = new Player();
//how do I allocate the other objects?
}
有没有办法为字母分配索引?我能想到的只是生成随机字母,例如:
Random r = new Random();
box = new char[9999];
for (int i = 0; i < 9999; i++){
box[i]= (char)(r.nextInt(25)+65); //there are 26 letters and A starts on position 65
}
还有其他想法吗?非常感谢有关如何思考解决此问题的任何建议。
【问题讨论】:
-
"和一个带有字母的“盒子”(A-Z,未指定的字母数量或问题中所述:无限制)" ... wha?
-
我假设一个包含随机字母的数组,但大小相当大。
-
您可能不需要一个数组来实际保存所有这些随机字母。只需在需要时生成一个新的。
-
@Greg Hegwill,意思是我在每次迭代中为每个玩家分配一个随机字母并将其存储在他们的数组中还是什么?
-
没错。因为问题说您从中绘制的框是“无限”大小的,所以绘制下一个字母的概率总是与随机选择一个字母相同。如果盒子的大小是有限的,这不会为真,因为你选择了一个字母,例如
Q,下次会少一个Q(因此概率会改变)。