2017-07-29 18 views
-1

Also arbeite ich an dieser Aufgabe, ich bin sicher, Sie haben es gesehen. Es ist im Grunde eine Liste mit einer Reihe von Arrays drin und das ist, was ich getan habe.Wie kann ich das Array richtig durchlaufen, um den Index und den Wert zu erhalten, damit ich es bearbeiten kann?

erklärte ich dies an der Spitze meiner Klasse

static List<string[]> logBook = new List<string[]>(); 
    static string[] post = new string[2]; 

Und dann habe ich eine Funktion/Methode, die einen Benutzer unput nimmt und fügt sie als Eintrag.

private static void addToArray() 
    { 
     Console.WriteLine("Title: "); 
     DateTime dt = DateTime.Now; 
     string userInput = dt + " " + Console.ReadLine(); 
     Console.WriteLine("Message: "); 
     string userInputt = "\n\t\t" + Console.ReadLine(); 

     post = new string[2]; 
     post[0] = userInput; 
     post[1] = userInputt; 
     logBook.Add(post); 
    } 

Nun, was ich tun muß, ist, eine Funktion zu erstellen, die für einen Eintrag durchsucht und dann soll ich in der Lage sein, es zu bearbeiten/entfernen, wenn ich will, und das ist, was ich zu tun, dachte, somethign entlang diese Zeilen.

Jetzt habe ich ein Problem mit der Suchfunktion, ich habe keine Ahnung, wie es gebaut wird? Ist meine Art zu denken hier sogar richtig? Wie würde ich richtig nach einem Artikel suchen und den Indexwert damit bekommen?

+0

Aber 'post.Where (x => x.Contains („somestring“));' werde nichts tun ... –

+0

@WillemVanOnsem Ich würde „somestring“ zu einem userinput ändern, und das würde den Wert halten Konsole.ReadLine(); so .. Zeichenfolge userInput = Console.ReadLine(); oder denke ich hier falsch? –

Antwort

0

denke ich, dass vor allem sollten Sie Ihre verwendete Datenstruktur ändern, so würden Sie mit etwas am Ende wie folgt:

static Dictionary<string, Tuple<string, string>> logBook = new Dictionary<string, Tuple<string, string>>(); 

private static void addToArray() 
{ 
    var post = new Tuple<string, string>(userInput, userInputt); 
    logBook.Add(userInput, post); 
    logBook.Add(userInputt, post); 
} 

Dann können Sie easilly in O (1) Suche Zeit:

private static void search() 
{ 
    var key = "your key here"; 
    if(logBook.ContainsKey(key)) 
    { 
     var post = logBook[key] 
     // edit here 
     post.Item1 = .... 
     post.Item2 = .... 
    } 
} 

Diese Lösung verarbeitet keine doppelte Eingabe und kann bei Bedarf ordnungsgemäß geändert werden.

+0

Die Sache ist, dass ich Liste verwenden muss, und ich brauche auch eine binäre Suche + eine Blasensortierung. –

+0

Sorry, es ist nicht offensichtlich, was Sie wirklich wollen. Warum brauchst du eine Liste? Warum müssen Sie eine binäre Suche verwenden, wenn Dictionary/Hashtable effizienter ist? –

+0

Schulaufgabe, das Logbuch sollte eine Liste sein und jeder Eintrag sollte ein Array sein, ich sollte eine binäre Suchmethode implementieren, um Einträge aus dem Logbuch zu finden und zu extrahieren, ich sollte Einträge bearbeiten, hinzufügen und entfernen können. –

0

erstellen Sie eine Bedingung, wo (ex.) then macht Entfernen und else macht Anpassung. Die Anpassung kann durch Suchen, Kopieren, Entfernen des Originals, Bearbeiten der Kopie und Einfügen der späteren Kopie erfolgen.

Verwandte Themen