Pick random word from list?

前端 未结 3 2080
春和景丽
春和景丽 2021-01-28 22:21

I´m having trouble picking a random word from a list in another file. Actually I can´t even get it to choose any word. I´m not sure how to connect the 2 files so to say. Hoping

3条回答
  •  忘了有多久
    2021-01-28 23:02

    Try creating a Static Class and add a method for returning your List, you will then be able to access your wordlist.

    example:

    static class WordList
    {
       static List words = new List();
    
       public static  void ListOfWords()
       {
           words.Add("test");         // Contains: test
           words.Add("dog");          // Contains: test, dog
           words.Insert(1, "shit"); // Contains: test, shit, dog
    
           words.Sort();
           foreach (string word in words) // Display for verification
           {
               Console.WriteLine(word);
           }
    
       }
    
       public static List GetWords()
       {
          return words;
       }
    
       public static void AddWord(string value)
       {
           words.Add(value);
       }
    }
    

    You would then change your switch statement to look something like this.

    switch (MenuChoice)
    {
        case 1:               
            Console.Write("\n\tAdd a word\n\n");
            var insert = Console.ReadLine();
            WordList.AddWord(insert);
            Console.Write("\n\tList of words\n\n");
            WordList.ListOfWords();                
            break;
        case 2:
            Console.Write("\n\tList of words\n\n");
            WordList.ListOfWords();
            break;
    
        ....
    

    and your pickWord Method would look like this:

    static string pickWord()
    {
        string returnword = "";
    
        Random randomGen = new Random();
        returnword = WordList.GetWords()[randomGen.Next(0, WordList.GetWords().Count() - 1)];
        return returnword;
    }
    

    I modified your Wordlist class so that it can use a file to maintain your Words between uses of your program, just incase that is what was being asked of you.

    static class WordList
    {
        static string filePath = @"C:\temp\Word.txt";
        static List words = new List();
        private static void CheckFile()
        {
           //Makes sure our base words are saved to the file
           if (!File.Exists(@"C:\temp\Word.txt"))
           {
               using (TextWriter writer = new StreamWriter(filePath))
               {
                   writer.WriteLine("test");
                   writer.WriteLine("dog");
                   writer.WriteLine("shit");
               }
           }
       }
    
       public static  void ListOfWords()
       {
           CheckFile();
           words.Clear();
           using (TextReader file = new StreamReader(filePath))
           {
               char[] delineators = new char[] { '\r', '\n' };
               string[] tempWords = file.ReadToEnd().Split(delineators, StringSplitOptions.RemoveEmptyEntries);
    
               foreach (string line in tempWords)
               {
                   words.Add(line);
               }
    
           }
    
    
           foreach (string word in words) // Display for verification
           {
               Console.WriteLine(word);
    
           }
    
       }
    
       public static List GetWords()
       {
          return words;
       }
    
       public static void AddWord(string value)
       {
           CheckFile();
           using (TextWriter writer = new StreamWriter(filePath,true ))
           {
               writer.WriteLine(value);
           }
       }
    }
    

提交回复
热议问题