切换和包含列表和数组的案例

时间:2017-04-10 18:33:59

标签: c# arrays list switch-statement case

我一直在努力制作一个用户选择一个选项的程序,然后我就为每个选项使用一个开关盒。我最大的问题是案例1,2,4。

案例1:在这里,用户能够通过列表输入尽可能多的字符串。

关于案例2:在这里我希望用户能够通过数组输入4个字符串。

案例3:打印出案例1(列表)中的所有字符串。

案例4:打印出案例2(数组)中的所有字符串。

案例5:退出计划

我知道案例1,2和4中的代码肯定是错的,但我似乎无法找到任何关于该做什么的好答案,我已经在网上搜索了很长一段时间。< / p>

这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ryggsäcken
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            bool running = true;//Ger ett booleskt värde till variabeln     running för att kunna skapa en loop

            while (running)//Här skapas loopen
            {
                Console.WriteLine("\nVälkommen till ryggsäcken!");
                Console.WriteLine("\n[1] Lägg till flera föremål i stora facket");
                Console.WriteLine("[2] Lägg till 4 föremål i lilla facket");
                Console.WriteLine("[3] Skriv ut innehållet i stora facket");
                Console.WriteLine("[4] Skriv ut inehållet i lilla facket");
                Console.WriteLine("[5] Avsluta");
                Console.Write("\nVälj: ");

                int option = Convert.ToInt32(Console.ReadLine());//Konverterar från string till Int


                switch (option)
                {
                    case 1:
                        Console.Write("Lägg till föremål i ryggsäcken: ");
                        List<string> mylist = new List<string> { };
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        break;

                    case 2:
                        Console.WriteLine("Skriv in 4 föremål");
                        string[] answer = new string[5];
                        for (int i = 0; i < answer.Length; i++)
                        {
                            answer[i] = Console.ReadLine();
                        }
                        break;



                    case 3:
                        foreach (string item in mylist)
                        {
                            Console.WriteLine(item);
                        }
                        break;
                    case 4:
                         Console.Writeline(answer[i]);
                         break;

                     case 5:
                        running = false;

                }
            }
         }
    }

}

2 个答案:

答案 0 :(得分:0)

你必须在while循环之外声明列表,否则它将在每次运行后被删除。

        List<string> mylist = new List<string> ();
        while(running)
        ...

在第一种情况下,你应该添加一个带有break语句的循环,如:

case 1:
    Console.Write("Lägg till föremål i ryggsäcken: ");
    while(true)
    {
        string lineEntered = Console.ReadLine();

        //Now here comes the break operator
        if(lineEntered == "stopImDone"){
        break;

        mylist.Add(lineEntered);
    }

    break;
}

案例4应该更像

case 4:
    foreach(string i in awnser){
        Console.WriteLine(i);
    break;
    }

这样就会显示输入的所有字符串。

答案 1 :(得分:0)

你需要初始化mylist并在本课程的最顶层回答,而不是在案例中。然后,您需要在案例3和4中放置检查以确保这些值已初始化或具有有效信息或其中包含多个元素,然后仅打印列表或答案。你甚至可以写一个当时的写作声明说'&34;嘿,你的变量还没有初始化,或者你需要输入值。&#34;或者那种程度的东西。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ryggsäcken
{
    public class MainClass
    {
        public static void Main(string[] args)
        {
            List<string> mylist = new List<string> { };
            string[] answer = new string[5];

            bool running = true;//Ger ett booleskt värde till variabeln     running för att kunna skapa en loop

            while (running)//Här skapas loopen
            {
                Console.WriteLine("\nVälkommen till ryggsäcken!");
                Console.WriteLine("\n[1] Lägg till flera föremål i stora facket");
                Console.WriteLine("[2] Lägg till 4 föremål i lilla facket");
                Console.WriteLine("[3] Skriv ut innehållet i stora facket");
                Console.WriteLine("[4] Skriv ut inehållet i lilla facket");
                Console.WriteLine("[5] Avsluta");
                Console.Write("\nVälj: ");

                int option = Convert.ToInt32(Console.ReadLine());//Konverterar från string till Int


                switch (option)
                {
                    case 1:
                        Console.Write("Lägg till föremål i ryggsäcken: ");

                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        mylist.Add(Console.ReadLine());
                        break;

                    case 2:
                        Console.WriteLine("Skriv in 4 föremål");

                        for (int i = 0; i < answer.Length; i++)
                        {
                            answer[i] = Console.ReadLine();
                        }
                        break;



                    case 3:
                        if (mylist.Count > 0)
                        foreach (string item in mylist)
                        {
                            Console.WriteLine(item);
                        }
                        break;
                    case 4:
                         if (answer.Length > 0)
                        for (int i = 0; i < answer.Length; i++)
                        {
                            Console.WriteLine(answer[i]);
                        }

                         break;

                     case 5:
                        running = false;
                        break;

                }
            }
         }
    }
}