我的完整数组没有显示

时间:2016-05-06 00:43:13

标签: c# arrays display

我应该创建一个游戏,其中选择了文本文件中的随机单词。然后对该词进行加扰并为用户显示。然后用户必须尝试猜测原始单词。完成后,按“检查答案”,显示是否正确。这是我第一次在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;
} 

1 个答案:

答案 0 :(得分:0)

当您检查是否已使用某个特定字母时,如果已使用,则只需继续下一个位置即可。相反,你需要再试一次,直到你收到一封没有被使用过的信件。最简单的方法就是减少循环变量,以便再次尝试插槽。

另外,你选择单词的逻辑还没有检查单词是否被选中 - 你只需从每个文件中选择一个随机单词,所以你经常会得到同一个单词一遍又一遍地。