在步骤C#中向Array添加用户输入?

时间:2016-11-27 13:23:43

标签: c# arrays loops

我在学校有一个任务,说我应该创建一个类似于背包的程序,我应该使用数组和列表。

背包的功能是能够将4个物体放入较小的隔间(ytterfack),然后将无限量的物体放入大隔间(stora facket)。

我希望它可以使用一个菜单,用户可以将一个项目放入(ytterfack),如果用户想要,切换到(stora fack)并放置一个项目到那一个。也就是说,我试图避免为(ytterfack)设置for循环,这意味着用户可以选择puttin 4对象进入(ytterfack)。

有没有办法创建一个数组,让用户一次将这些元素放在一个中,甚至在它满了时收到一条消息?

class Program
{
    static void Main(string[] args)
    {

        Console.WriteLine("\tVälkommen till Ryggsäcken!!\n");
        Console.WriteLine("\t[1] Lägg till ett föremål i det stora facket");
        Console.WriteLine("\t[2] Lägg till ett föremål i ytterfacket");
        Console.WriteLine("\t[3] Skriv ut innehållet i stora facket");
        Console.WriteLine("\t[4] Skriv ut innehållet i ytterfacket");
        Console.WriteLine("\t[5] Rensa innehållet i stora facket");
        Console.WriteLine("\t[6] Rensa innehållet i ytterfacket");
        Console.WriteLine("\t[7] Avsluta\n");

        string[] ytterFack = new string[4];
        List<string> storaFacket = new List<string> { };
        int i = 0;

        bool kör = true;

        do 
        {
            Console.Write("\n\tVälj punkt från menyn: ");
            int menyVal = Convert.ToInt32(Console.ReadLine());

            switch (menyVal) 
            {
                case 1:
                    Console.Write("\n\tSkriv in ett föremål: ");
                    storaFacket.Add(Console.ReadLine());
                    //Console.WriteLine("\n\tDu har lagt in " +  + " Tack!\n");
                    break;
                case 2:
                    Console.Write("\n\tSkriv in ett föremål: ");
                    ytterFack[i] = Console.ReadLine();
                    //Console.WriteLine("\n\tDu har lagt in " + ytterFack[i] + " Tack!\n");
                    break;

                case 3:
                    Console.WriteLine("\tInnehållet i stora facket är:");
                    foreach (string item in storaFacket)
                    {
                        Console.WriteLine("\t" + item);
                    }
                    break;
                case 4:
                    Console.WriteLine("\tInnehållet i ytterfacket är:");
                    foreach (string item in ytterFack)
                    {
                        Console.WriteLine("\t" + item);
                    }
                    break;
                case 5:
                    storaFacket.Clear();
                    Console.WriteLine("\tNu är stora facket tömt!\n");
                    break;
                case 6:
                    Array.Clear(ytterFack, 0, ytterFack.Length);
                    Console.WriteLine("\tNu är ytterfacket tömt!\n");
                    break;
                case 7:
                    kör = false;
                    break; 
                default:
                    break;

            }
        }
        while (kör);
    }
}

2 个答案:

答案 0 :(得分:0)

好的,这就是它的成就。

我很欣赏一两条关于它的评论,我能做得更好或更容易做些什么?

void OnTriggerEnter(Collider other){
if(other.gameobject.tag == "Player")
//do something
}

答案 1 :(得分:0)

而不是在Main()中执行所有操作,首先将BackPack建模为单独的类 - 这样您就可以一致地实现和应用约束(如最多4项),即使您使用的是两者List<string>

public class BackPack
{
    private List<string> ytterFacket = new List<string>();
    public List<string> YtterFacket
    {
        get {
            return ytterFacket;
        }
    }

    private List<string> storaFacket = new List<string>();
    public List<string> StoraFacket
    {
        get {
            return storaFacket;
        }
    }

    public string PutIntoYtterFacket(string item)
    {
        if (ytterFacket.Count < 4)
        {
            ytterFacket.Add(item);
            return string.Format("Du har lagt in {0}! Tack!", item);
        }
        return string.Format("Kan inte lägge till {0}, gräns nådd", item);
    }

    public string PutIntoStoraFacket(string item)
    {
        storaFacket.Add(item);
        return string.Format("Du har lagt in {0}! Tack!", item);
    }

    public string ClearYtterFacket()
    {
        ytterFacket.Clear();
        return "Nu är ytterfacket tömt!";
    }

    public string ClearStoraFacket()
    {
        storaFacket.Clear();
        return "Nu är storafacket tömt!";
    }
}

因此,添加到ytterFacket的情况变为(假设fjallravenBackPack类的实例):

Console.Write("\n\tSkriv in ett föremål: ");
fjallraven.PutIntoYtterFacket(Console.ReadLine());

您不必在case块中执行错误处理,BackPack实例将为您执行此操作! (抱歉错误字符串,我的瑞典语有点生疏)