分配变量后的c#线性搜索

时间:2017-04-20 16:29:38

标签: c# search linear

我一直在制作一个有效的程序。但现在我想将程序的搜索功能更改为更简单的功能。这就是我所做的:错误消息是使用未分配的局部变量logg。要清楚,这就是我希望搜索功能的外观。现在我只需要找出可变的东西

完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Loggbok
{
    class MainClass
    {
        public static void Main(string[] args)
        {
             DateTime tiden = DateTime.UtcNow;//Skriver ut tiden vid varje inlägg
            bool running = true;//Ger ett booleskt värde till variabeln running för att kunna skapa en loop
            List<string[]> loggbok = new List<string[]>();//Här skapas listan som innehåller arrayen

            while (running)//Här skapas loopen
            {
            Console.WriteLine("\n************************************");
            Console.WriteLine("\nVälkommen till loggboken!");
            Console.WriteLine("\n************************************");
            Console.WriteLine("\n[1] Skriv nytt inlägg i loggboken");
            Console.WriteLine("[2] Skriv ut alla loggar");
            Console.WriteLine("[3] Sök inlägg i loggboken");
            Console.WriteLine("[4] Radera innehåll i loggboken");
            Console.WriteLine("[5] Avsluta loggboken");
            Console.WriteLine("\n************************************");
            Console.Write("\nVälj: ");

            int option;//Int eftersom valet ska vara ett heltal

            try
            {
                option = Int32.Parse(Console.ReadLine());//testar så att inmatningen är av typen Int

            }
            catch
            {
                Console.WriteLine("Fel, du får bara skriva in nummer");//Felmeddelande om inmatningen är en bokstav
                continue;
            }

            switch (option)
            {
                case 1:
                    string[] logg = new string[2];//Här deklareras arrayen
                    Console.WriteLine("\n************************************");
                    Console.WriteLine(tiden);
                    Console.WriteLine("Ange en Titel:");
                    logg[0] = Console.ReadLine();//Här sparas titeln
                    Console.Clear();
                    Console.WriteLine("\n************************************");
                    Console.WriteLine("Skriv inlägg:");
                    logg[1] = String.Format("{0}{1}{2}", Console.ReadLine(), Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//Här sparas inlägget samt datum och tid, detta är möjligt tack vare formattering 
                    loggbok.Add(logg);
                    break;


                case 2:
                    foreach (string[] item in loggbok)//För att skriva ut alla items i loggboken
                    {
                        Console.WriteLine("\n--------------------------------------\n ");
                        Console.WriteLine(item[0]);//För att skriva ut titel
                        Console.WriteLine(item[1]);//För att skriva ut inlägg
                        Console.WriteLine("\n--------------------------------------\n ");
                    }
                    Console.ReadLine();
                    break;




                case 3:

                    Console.WriteLine("\n************************************");
                    Console.WriteLine("Skriv in ett ord du vill söka efter i loggboken:");
                    string nyckelord = Console.ReadLine();//Här sparas inmatningen av nyckelordet
                    for (int i = 0; i < logg.Length; i++)
                    {
                        if (logg[i] == nyckelord)
                        {
                            Console.WriteLine(logg[0]);
                            Console.WriteLine(logg[1]);
                        }
                        else
                        {
                            Console.WriteLine("Finns ej");
                        }

                    }

                        break;






                case 4:

                    Console.WriteLine("\n************************************");
                    Console.WriteLine("Skriv titeln på det inlägg du vill ta bort:");
                    string title = Console.ReadLine();//Sparar titeln på inlägget användaren vill radera

                    for (int x = 0; x < loggbok.Count; x++) //Loopa igenom varje titel
                    {
                        if (String.Equals(loggbok[x][0], title, StringComparison.OrdinalIgnoreCase)) //Icke skiftlägeskänslig matchning av titeln.
                        {
                            loggbok.RemoveAt(x); //Matchning funnen.
                        }
                        else
                        {
                            Console.WriteLine("Titeln finns inte, återgår till huvudmenyn");
                        }


                    }
                    break; //Avsluta loopen.


                case 5:

                    running = false;//Avslutar loopen och därmed programmet
                    break;


                default:

                    Console.WriteLine("Nu blev det fel, välj mellan [1] [2] [3] [4] [5]");//Felmeddelande om valet är någon annan siffra än de som menyn innehåller
                    break;









            }
        }
    }
}

}

2 个答案:

答案 0 :(得分:0)

  

这就是我所做的:错误消息是使用未分配的   局部变量logg

必须在控制离开包含方法之前分配所有局部变量。

  

在案例1中声明

string[] logg = new string[2];中移除case 1并将其插入到开始try块之前,否则您将无法在其他情况下使用该阵列。

string[] logg = new string[2];//Här deklareras arrayen
try
{
   option = Int32.Parse(Console.ReadLine());//testar så att inmatningen är av typen Int
}
...
...
...

答案 1 :(得分:0)

您的问题不明确,应予以改进。 假设代码完全按照原样给出,那么您将使用 break 退出循环或切换块。 纠正并检查是否仍有问题。