简体   繁体   English

需要帮助的hang子手C#

[英]Need help hangman c#

When I try to run, it says: 当我尝试运行时,它说:

System.Collections.Generic.List' does not contain a definition for 'Length' and no extension method 'Length' accepting a first argument of type 'System.Collections.Generic.List' could be found (are u missing a using directive or an assembly reference?) System.Collections.Generic.List'不包含'Length'的定义,找不到扩展方法'Length'接受类型为'System.Collections.Generic.List'的第一个参数(您是否缺少using指令或组装参考?)

This points to the code written in case '3'. 这指向在情况“ 3”中编写的代码。 I've used google and tried reading in the book, but I cant seem to find a solution. 我曾经用过google并尝试过阅读这本书,但似乎找不到解决方法。

    static void Main (string[] args)
    {           
        char meny;// För att kunna göra menyval.            
        string s;// Ordet som spelaren kommer skriva in.
        List<string> dinaord = new List<string> { "Varg", "Apor", "Besvärad", "Människor", "Komplettering" };// Array för spelarens ord, samt mina egna.
        bool visameny = true; // visameny blir tilldelat true.

        Console.WriteLine("\n\t\tHejsan, och välkommen till Hänga Gumma!");

        do// Återvänder till menyn så länge den är true.
        {
            Console.WriteLine("\n\n  1) Lägga till ord");
            Console.WriteLine("\n  2) Lista alla ord");
            Console.WriteLine("\n  3) Spela");
            Console.WriteLine("\n  4) Avsluta");// Visar 1-4, samt vad varje nummer leder till.
            Console.WriteLine("\n\n  Välj 1-4");
            meny = Convert.ToChar(Console.ReadLine());// Konverterar det spelaren väljer till "meny".

            switch (meny)// Switchen börjar.
            {
                case '1':
                    Console.Write("\nLägg till ord:");
                    dinaord.Add(Console.ReadLine());// Låter spelaren slå in ord och sparar dem i en array. Ändrade till en Console.ReadLine.                                                                       

                    break;

                case '2':// Mina egna ord.

                    dinaord.Sort();// Flyttade sorteringen hit, för att få den till att sortera orden när man trycker två.   
                    Console.Write("\nHär visas dina ord!\n");
                    int i = 1;
                    foreach (string ord in dinaord)// Löste detta med hjälp av dina anvisningar att titta igenom kapitlet igen och försöka olika koder.
                    {
                        Console.Write(ord + " ");// Här visas spelarens ord, (om dem har lagt till några) samt mina egna ord.
                    }

                    break;

                case '3':// Här ska spelet starta.

                    int antalchanser;// antalchanser görs om till en int för att senare jämföras.
                    int felgissningar = 0;// felgissningar görs om en till en int, och får värdet 0, för att senare jämföras med antalchanser och kommer att leda till att spelet avslutas om felgissningar blir lika med antalchanser.
                    Console.Write("\nHur många fel får man ha?");
                    antalchanser = Convert.ToInt32(Console.ReadLine());// Gör så att det spelaren skriver in blir till "antalchanser".
                    Console.Write("\nFelgissningar:0/" + antalchanser);// Visar antal felgissningar.

                    Console.Write("\nGissa ett ord:");
                    s = Convert.ToString(Console.ReadLine());// Ordet som ska sökas efter. 

                    int o;
                    for (o = 0; o < dinaord.Length; o++)// Söker igenom arrayn dinaord och jämförs med det spelaren har skrivit in.
                        if (dinaord[o] == s)
                        {
                            Console.WriteLine("\nGrattis du gissa rätt!" + dinaord[o] +
                                " var det hemliga ordet ");
                            break;// Bryter satsen om dem gissar rätt.
                        }

                    if (o == dinaord.Length)

                    { 
                        Console.WriteLine("\nDu gissa fel!");                        
                    felgissningar++;// Lägger till +1 på felgissningar om dem gissar fel.
                    }

                    if (felgissningar == antalchanser)// Jämför felgissningar med antalchanser.

                    {    
                        Console.WriteLine("\nDu har inga chanser kvar! Tack för att du spelade Michaels ofulländade version!");
                        visameny = false;// visameny blir false, avbryter spelet om antalchanser tar slut.
                    }

                    if (felgissningar != antalchanser)// Kollar om felgissningar inte är lika med antalchanser.
                    {
                        Console.WriteLine("\nGissa igen:");
                    }
                        break;

                case '4':
                    {
                        Console.WriteLine("\nSpelet avslutas!");
                        Console.WriteLine("\nTack för att du spelade Michael´s ofulländade version!");
                        visameny = false;// visameny blir false, avbryter spelet.
                    }
                        break;

                default:// Ifall annat än 1-4 knappas in, visas detta.
                        Console.WriteLine("\n\tDu får inte trycka på den!" +
                        "\n\tAnvänd bara det som står på skärmen: 1-4");
                        break;


            }// Switchen slutar.



        } while (visameny == true);// Fortsätter loopen så länge den är true.
    }
}

} }

A List is not an array. List不是数组。 Native arrays ( string[] ) have a Length property, but a List<T> has a Count property. 本机数组( string[] )具有Length属性,但是List<T>具有Count属性。 So you just need: 因此,您只需要:

for (o = 0; o < dinaord.Count; o++)

Guess you are looking for dinoard.Count instead of length. 猜猜您在寻找dinoard.Count而不是长度。 Also you can use foreach like in case '2', which you seem to be comfortable with. 您也可以像情况“ 2”那样使用foreach,您似乎对此很满意。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM