Foreach不会返回char列表

时间:2017-06-29 22:01:00

标签: c# list foreach char

所以我正在制作这个刽子手游戏,因为我试图学习C#,但现在我坚持使用System.Collection.Generic.List'1 [System.Char]。我想要做的是将错误的答案保存到List nepravilne中,查看函数izpis和igra

class Program
{
    static private int _sccore;

    static void Main(string[] args)
    {
        string beseda;
        int dolzina;
        bool play=true;
        char input;

        do
        {
            beseda = izberi_besedo();
            dolzina = beseda.Length;
            igra(beseda, dolzina);

            Console.WriteLine("Vnesite Y za nadaljevanje ali N za zakljucitev igre.");
            input = char.Parse(Console.ReadLine());

            if (input.Equals('y'))
            {
                play = true;
                Console.WriteLine("play {0}",play);
            }
            if (input.Equals('n'))
            {
                play = false;
                Console.WriteLine("play {0}", play);
            }
        } while (play == true);                         
    }

    static private string izberi_besedo() {
        string[] besede = { "voda", "ladija", "letalo", "motor", "klavir", "harmonika", "saksofon", "oklep", "penkalo", "tiskalnik", "miza", "copat", "krogla", "klobuk", "gumb", "harfa", "kontrabas", "mandarina", "les", "knjiga", "vlak", "vijak", "struna", "kozarec" };
        Random rnd = new Random();
        int stevilka = rnd.Next(0, 23);
        string beseda = besede[stevilka];
        return beseda;
    }

    static private void igra (string beseda, int dolzina){

        int i, poizkusi = 0;
        int pravilne = 0;
        bool endloop = false;
        char crka;
        List<char> nepravilne = new List<char>();//declaring char list for wrong words

        string[] odkrite = new string[dolzina];

        for(i=0; i<dolzina; i++) { odkrite[i] = "_"; }

        do {

            izpis(odkrite,nepravilne); //izpis - function which returns just text, we are inputing list nepravilne, which are wrong answers
            vpis(out crka);

            if (!(beseda.Contains(crka)))//if word doesen't contain letter
            {
                poizkusi++;
                _sccore--;
                nepravilne.Add(crka);//add that letter to list
            }


            for (i = 0; i<dolzina; i++)
            {
                if (crka.Equals(beseda[i]))
                {
                    odkrite[i] = Convert.ToString(crka);
                    pravilne++;
                    _sccore++; 
                }  
            }
            Console.Clear();
            if (pravilne >= dolzina || poizkusi >= 4)endloop = true;
        } while (endloop==false);
     }

    static private void vpis(out char crka)
    {
        string vpis;
        bool stevilka=false, status;

        Console.WriteLine("\nVnesite crko za ugibanje besede");
        vpis = Console.ReadLine();

        stevilka = IsNumeric(vpis);

        if (vpis.Length == 1 && stevilka==false)
        {
            crka = Convert.ToChar(vpis);
        }
        else
        {
            do
            {
                status = false;
                if (vpis.Length!=1) Console.WriteLine("Vnesli ste prevec crk, poizkusite ponovno");
                if(stevilka==true) Console.WriteLine("Vnesli ste stevilko, poizkusite ponovno");
                vpis = Console.ReadLine();
                stevilka = IsNumeric(vpis);
                if (vpis.Length == 1 && stevilka == false)
                {
                    status = true;
                }
            } while (status==false);

            crka = Convert.ToChar(vpis);
        }

    }



    private static bool IsNumeric(string vpis)
    {
        int number;
        return int.TryParse(vpis, out number);
    }

    private static void izpis(string[] odkrite, List<char> nepravilne)
    {
        Console.Write("Rezultat {0} | ", _sccore);

        foreach (char element in nepravilne)//write out char elements which contain letter
        {
            Console.Write("{0} ", nepravilne);
        }

        Console.WriteLine();

        foreach (string element in odkrite)
        {
            Console.Write("{0} ", element);
        }
    }

}

}

1 个答案:

答案 0 :(得分:2)

我认为你在下面的代码中有一个拼写错误,即我认为你打算在循环中打印变量元素而不是 nepravilne

foreach (char element in nepravilne)
{
    Console.Write("{0} ", nepravilne);
}

应该如下呢?

foreach (char element in nepravilne)
{
    Console.Write("{0} ", element);
}