我的完整阵列没有显示
my full array isn't being displayed
我应该创建一个从文本文件中随机选择单词的游戏。然后这个词被加扰并显示给用户。然后用户必须尝试猜测原始单词。完成后,他们按“检查答案”并显示它们是否正确。这是我第一次在 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;
}
当您检查某个字母是否已被使用时,如果已被使用,您只需继续到下一个位置。相反,您需要重试,直到收到未使用过的字母。最简单的方法就是减少循环变量,以便它再次尝试插槽。
此外,您选择单词的逻辑没有检查是否已选择单词 - 您每次只是从整个文件中随机选择一个,所以您经常会得到相同的单词一遍又一遍地。
我应该创建一个从文本文件中随机选择单词的游戏。然后这个词被加扰并显示给用户。然后用户必须尝试猜测原始单词。完成后,他们按“检查答案”并显示它们是否正确。这是我第一次在 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;
}
当您检查某个字母是否已被使用时,如果已被使用,您只需继续到下一个位置。相反,您需要重试,直到收到未使用过的字母。最简单的方法就是减少循环变量,以便它再次尝试插槽。
此外,您选择单词的逻辑没有检查是否已选择单词 - 您每次只是从整个文件中随机选择一个,所以您经常会得到相同的单词一遍又一遍地。