【发布时间】:2016-08-31 22:37:56
【问题描述】:
我应该创建一个从文本文件中选择随机单词的游戏。然后这个词被加扰并显示给用户。然后用户必须尝试猜测原始单词。完成后,他们按检查答案并显示它们是否正确。这是我第一次在 C# 中做任何事情(我已经习惯了 Java),所以如果适用的话,我将非常感谢基本的解释。我已经编写了大部分程序,但是当显示打乱的单词时,它不会显示整个打乱的单词,只有大约 3 个字母,有时每个单词有 3 个相同的字母。我查看了我的代码,但找不到问题所在。我做了一些快速测试,我知道文件正在被读入,并且 origWords[] 数组中确实存储了一个完整的单词。这使我相信问题出在 jumbleWords() 方法中。我感谢任何和所有的帮助。
编辑:我将代码缩减为我认为的问题区域。
private string jumbleWords(String origWord)
{
// converts word to char array
char [] charArray = origWord.ToCharArray();
// creates bool array with length of charArray
bool [] letterCheck = new bool [charArray.Length];
for (int i = 0; i < letterCheck.Length; i++)
{
letterCheck[i] = false;
}
Random letterAssign = new Random();
string jumble = null;
for (int index = 0; index < charArray.Length; index++) //jumbling of word
{
// picks random letter (number position of array)
int letterChosen = letterAssign.Next(charArray.Length);
if (letterCheck[letterChosen] == false) //check if letter has been used
{
jumble += charArray[letterChosen]; //adds letter to jumble string
// changes bool array position to true so it can't be used again
letterCheck[letterChosen] = true;
}
}
return jumble;
}
【问题讨论】:
-
查找 Fisher Yates Shuffle 并用它来混淆你的话。这不是 C# 语言问题,而是算法选择不当。
-
但是我继续展示了整个程序。,这实际上适得其反。见How to create a Minimal, Complete, and Verifiable example。如果您认为
jumbleWords是您的问题,则编写一个仅测试该功能的MCVE,确认是问题所在,然后仅发布该代码。转储一大堆代码会让人们更难帮助你。 -
我把它削减到问题区域。谢谢。