【问题标题】:Foreach won't return elements of char listForeach 不会返回 char 列表的元素
【发布时间】:2023-04-05 11:44:02
【问题描述】:

所以我制作了这个刽子手游戏,因为我正在尝试学习 C#,但现在我坚持使用 System.Collection.Generic.List'1[System.Char]。我想要做的是将错误的答案保存到列表 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);
        }
    }

}

}

【问题讨论】:

  • 抱歉,我看不懂(看不懂)代码。它的意图非常模糊。你能翻译这些名字来理解你在做什么吗?如果您对代码的每个部分的作用添加一些说明,则更容易获得帮助。
  • 是的,我的错误,很好的教训,下次当我用我的语言做某事时发布 cmets。谢谢你的时间

标签: c# list foreach char


【解决方案1】:

我认为您在以下代码中有错字,即我认为您打算在循环中打印变量 element 而不是 nepravilne

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

应该改为如下?

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

【讨论】:

  • 上帝保佑你伙计,非常感谢你,我现在觉得自己好傻
  • 别担心!每个人都有被教导的权利:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多