Ich erstelle ein Journal, das aus einem Array innerhalb einer Liste besteht, wobei das Array jeder neue Eintrag und die Liste das Journal ist. Hier ist, wie ich habe versucht, es zu lösen bisher:string [] innerhalb der Liste, die Probleme verursacht
using System;
using System.Collections.Generic;
using System.Linq;
namespace Journal
{
class Program
{
static void Main(string[] args)
{
int menuChoice = 0;
List<string[]> journal = new List<string[]>();
while (menuChoice != 4)
{
Console.WriteLine("\n\t\t===Journal===");
Console.WriteLine("\t[1] New entry in the journal");
Console.WriteLine("\t[2] Search entry in the journal");
Console.WriteLine("\t[3] Show contents of the journal");
Console.WriteLine("\t[4] Exit");
Console.Write("\tChoose: ");
int.TryParse(Console.ReadLine(), out menuChoice);
{
switch (menuChoice)
{
case 1:
{
string[] entry = new string[3];
DateTime time = DateTime.Now;
entry[0] = Convert.ToString(time);
Console.Write("\n\tWrite your title: ");
entry[1] = Console.ReadLine();
Console.Write("\n\tWrite your new entry: ");
entry[2] = Console.ReadLine();
journal.Add(entry);
}
break;
case 2:
Console.Write("\n\tSearch entry in the journal: ");
string searchTerm = Console.ReadLine();
for (int i = 0; i < journal.Count; i++)
if (journal[i].Contains(searchTerm))
{
Console.WriteLine(journal[i]);
}
else
{
Console.WriteLine("\n\tYour search was not found.");
}
break;
case 3:
Console.WriteLine("\n\tJournal:");
foreach (string[] item in journal)
Console.WriteLine("\n\t" + item);
break;
case 4:
break;
}
}
}
}
}
}
Ich habe sehr viel Mühe hat versucht, diese Arbeit zu machen, die es immer noch nicht. Was ich versuche zu tun ist, 3 Indexräume im Array für die Zeit, den Titel und den Text zu verwenden und dann diese 3 zusammen in die Liste zu setzen, so dass sie ein einzelnes Element in der Liste werden, wenn ich nach dem Titel suche als eine Gruppe.
Ich habe versucht, eine normale String-Liste zu verwenden, wenn ich das Journal deklariere, aber dann kann ich das Array nicht hinzufügen, ohne angeben zu müssen, welcher Index eingefügt werden soll. Wenn ich den Typ der Liste in eine Zeichenkette [] ändere, hören die foreach-Schleifen auf zu arbeiten, weil sie eine Zeichenkette [] nicht in eine Zeichenkette konvertieren können, also ändere ich die Zeichenkette innerhalb der foreach-Schleife in eine Zeichenkette [] und jetzt alle Bekomme ich wenn ich versuche alles aus zu schreiben oder suche ist "System.String []".
Das ist ziemlich genau, wo ich gerade bin, also wenn jemand mir sagen könnte, was ich falsch mache oder mir zeigen, wie ich das lösen kann, würde es sehr geschätzt werden.
I‘ Es empfiehlt sich, eine 'JournalEntry'-Klasse zu erstellen, anstatt hierfür ein Zeichenfolgenarray zu verwenden. Es wird Ihren Code viel weniger verwirrend machen: 'entry.Time',' entry.Title' und 'entry.Content' gegenüber' entry [0] ',' entry [1] 'und' entry [2] '. –
Beachten Sie auch, dass Sie nicht 'string.Contains' aufrufen, sondern' Enumerable.Contains' (eine Linq-Methode, die auf Auflistungen wie Arrays, Listen usw. angewendet wird). Dies bewirkt, dass bei einer Suche überprüft wird, ob die Zeit, der Titel oder der Inhalt eines Eintrags genau dem angegebenen Suchbegriff entspricht, anstatt zu prüfen, ob der Titel oder der Inhalt den Suchbegriff enthält. '" abc ".Contains (" b ")' gibt wahr zurück, während '(new string [] {" abc "}).Enthält ("b") 'gibt false zurück, weil dieses Array keine" b "-String enthält. –