Förklaring: ta bort en vektor från en lista med fler vektorer
Hej! Jag som otroligt många andra behöver hjälp med loggboken, den är en uppgift i Programmering 1. Jag har en känsla av att jag har gjort så otroligt fel och tänkte att ni kunde göra input över vad jag har klantat till.
I dagsläget så får jag inte till det med att ta bort det inlägg som jag har valt själv. Skriver jag bara "kjgdöobg" så försvinner det första inlägget. Skriver jag allt korrekt så funkar det som det ska. Jag trodde tryParse fångar upp felaktiga svar?
Jag undrar också över min sökalgoritm. Hur skulle man gå tillväga om man vill söka på datum?
Jag skulle bli oerhört tacksam om jag fick en förklaring till detta!!!
using System;
using System.Collections.Generic; //Den här lägger jag till för att kunna använda mig av listor.
namespace Loggboken
{
class MainClass
{
//***************************************************************************************************************************
public static void Main(string[] args)
{
List<string[]> blogEntry = new List<string[]> { };//Här skapar jag min lista och döper den till blogEntry. Jag deklarerar den även som en string-lista.
DateTime time = DateTime.Now;// Här deklarerar jag dagens datum och döper det till time.
int menu;//Här deklarerar jag menyvalet till en int, för att senare kunna använda i switchen.
bool isRunning = true; //Skapar ett boolean värde och sätter det till sant, döper den till isRunning. På det sättet loopar menyn tills användaren trycker på avsluta.
while (isRunning)
//***************************************************************************************************************************
{
Console.WriteLine("**********Hej och välkomna till Bloggen!**********");
Console.WriteLine("Gör ett av följande val: \n[1]Skriv ett nytt logginlägg \n[2]Skriv ut alla logginlägg \n[3]Sök bland titlar på logginläggen \n[4]Ta bort inlägg \n[5]Avsluta programmet");
Int32.TryParse(Console.ReadLine(), out menu);//Mitt menyval, här använder jag mig av TryParse för att fånga upp felaktiga svar. Jag konverterar sedan min svar till en int.
//***************************************************************************************************************************
switch (menu)
{
case 1:
string[] post = new string[3]; //För att spara värderna i "post" behöver jag deklarera den i case 1. Jag talar även om för programmet att den innehåller 3 vektorer.
Console.Clear();//Rensar undan menyn
Console.WriteLine(time.ToLongDateString()); // Här skriver jag ut datumet.
Console.WriteLine("Lägg till rubrik: ");
post[0] = Console.ReadLine(); //Döper vektor 1 till post[0] och berättar att posten är vad användaren skriver in.
Console.WriteLine(" Skriv text nedan: ");
post[1] = Console.ReadLine();//Döper vektor 2 till post[1].
post[2] = Convert.ToString(time); // Här sparar jag datumet i vektor 3.
blogEntry.Add(post);// Här sparas min alla vektorerna i min lista.
Console.Clear();
break;
//***************************************************************************************************************************
case 2:
Console.Clear();
foreach (string[] entry in blogEntry) //För varje logginlägg i loggen....
{
Console.WriteLine("{0}\n{1}\n{2}", entry[0], entry[1], entry[2]);// ......Skriv ut alla logginlägg och inkludera rubrik, inlägg samt datum.
Console.ReadLine();
Console.Clear();
}
break;
//***************************************************************************************************************************
case 3:
Console.Clear();
Console.WriteLine("Skriv in en titel på ett inlägg: ");
string result = Console.ReadLine(); //Tar användarens sökord och konverterar till en string som jag döper till result
foreach (string[] entry in blogEntry)
if (entry[0] == result || entry[1] == result)
{
Console.WriteLine("{0}\n{1}\n{2}", entry[0], entry[1], entry[2]);
Console.ReadLine();
}
Console.Clear();
break;
//***************************************************************************************************************************
case 4:
Console.Clear();
Console.WriteLine("Vill du ta bort alla loggar eller bara en?" + "\n[J] för JA ta bort alla loggar \n[N] för NEJ ta bara bort en av mina loggar");
string answer = Console.ReadLine();
int yourChoice;
if (answer == "j" || answer == "J")
{
blogEntry.Clear();
Console.Clear();
}
else if (answer == "n" || answer == "N")
{
Console.Clear();
foreach (string[] entry in blogEntry)
{
Console.WriteLine("{0}\n{1}\n{2}", entry[0], entry[1], entry[2]);
}
Console.WriteLine("\nVänligen skriv titeln på det inlägg du vill ta bort");
int.TryParse(Console.ReadLine(), out yourChoice);
blogEntry.RemoveAt(yourChoice);
Console.Clear();
}
else
{
Console.WriteLine("Klicka på enter för att återgå till huvudmenyn");
Console.ReadLine();
Console.Clear();
}
break;
//***************************************************************************************************************************
case 5:
Console.Clear();//Här sätter jag while-loopen till falskt för att avsluta programmet.
isRunning = false;
break;
//***************************************************************************************************************************
default: //Defaulten fångar upp om användaren skriver in annat än vad som går att välja i switchen.
Console.WriteLine("Fel! Försök igen");
Console.ReadLine();
break;