2017-04-20 1 views
0

Ich habe ein Programm gemacht, das funktioniert hat. Aber jetzt möchte ich die Suchfunktion des Programms auf etwas einfacheres ändern. Dies ist, was ich getan habe: und die Fehlermeldung ist die Verwendung von nicht zugewiesenen lokalen Variablen logg. Um klar zu sein, so möchte ich die Suchfunktion aussehen. Jetzt muß ich herausfinden, nur die variable SacheC# lineare Suche nach dem Zuweisen von Variablen

vollständigen Code:

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; 









      } 
     } 
    } 
} 

}

+0

wo haben Sie _logg_ deklariert? –

+0

Es ist in Fall 1 deklariert, da ich es auch dort haben muss – mackanmorre

+0

machen es global zu der enthaltenden Methode. –

Antwort

0

Dies ist, was ich getan habe, und die Fehlermeldung ist die Verwendung von nicht zugeordneten lokaler Variable logg

Alle lokalen Variablen müssen zugewiesen werden, bevor die Steuerung die enthaltende Methode verlässt.

Es ist im Fall erklärt 1

die string[] logg = new string[2]; von case 1 entfernen und vor dem Öffnen try Block einfügen sonst werden Sie nicht das Array in den anderen Fällen nutzen können.

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

ok wie mache ich das? Im irgendwie neu zu allem :) – mackanmorre

+0

den vollen Code zeigen, dann bearbeite ich meine Antwort entsprechend. –

+0

@Ok Ich habe den ganzen Code eingefügt. Ich möchte, dass das Programm die gleiche Funktionalität wie vorher hat, wo das Programm so viele Protokolle wie möglich speichern und dann nach ihnen suchen könnte, sie ausdrucken usw. :) – mackanmorre

0

Ihre Frage ist nicht klar und sollte verbessert werden. Angenommen, der Code ist genau so wie er ist, dann verwenden Sie brechen aus einem Loop oder Switch-Block. Korrigieren Sie und prüfen Sie, ob Sie immer noch Probleme haben.