Permalänk

Loggboken C#

Hej!
Jag skulle behöva hjälp med min uppgift, jag har gjort så jag kan spara flera trådar i min lista och och kan skriva ut dem men när jag ska gå in på sökningen så så blir det så att jag bara får fram det första inlägg som sparats men inte det andra

Ska visa ett exempel vad jag menar:
Titel: a
innehåll: apa
inlägg 1

Titel b
innehåll: banan
inlägg 2
båda sparas.

om jag söker efter a så hittas det men om jag skriver b så hittas den inte men den finns om jag skulle söka på innehållets namn.
fattar inte vad som är fel, har testat contains också men får bara system-string på skärmen.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Loggboken { class Program { static void Main(string[] args) { bool running = true; //Här läggs en bool till för att se till att loopen stämmer hela vägen. List<string[]> Loggbok = new List<string[]> { }; //På dessa två rader skapas strängar på olika sätt för olika tidpunkter i programmet. string[] list = new string[1]; string Date = ""; //Här skapar jag en plats för att spara datumen som följer med inläggen. while (running) //Loopen startar. { Console.WriteLine("\n\tVälkommen till loggboken"); //Menyn som loopas tills användaren avslutar programmet. Console.WriteLine("\n\t [1] Skriv ett inlägg" + //Jag valde att använda mig av \n\t för att få menyn ut en bit från kanten av skärmen och "\n\t [2] Skriv ut alla inlägg" + //för att slippa skriva en massa Console.WriteLine så la jag till additions tecknet efter. "\n\t [3] Sök i loggboken" + "\n\t [4] Radera alla inlägg" + "\n\t [5] Avsluta"); Console.Write("\n\t Välj ett alternativ: "); int Val; //Skapade en int för switch-loopen. int.TryParse(Console.ReadLine(), out Val); //Här satte jag en TryParse för att förhindra att användaren skriver något annat än de rätta siffrorna. switch (Val) //Switchen startar. { case 1: list = new string[2]; Console.Write("Title: "); //Här får användaren först valet att välja en title för sitt inlägg list[0] = Console.ReadLine(); Console.Write("Innehåll: "); //Sedan vad som ska finnas i titeln. list[1] = Console.ReadLine(); Date = DateTime.Now.ToString("yyyy - MM - dd"); //Här kommer datumet fram när de är fördiga med inlägget. Loggbok.Add(list); //Här sparas inlägget. break; case 2: Console.WriteLine("Visar tidigare inlägg: "); //Case 2 tar fram alla inlägg som har skrivits med sin titel,innehåll och datum som de skrivits. foreach (var item in Loggbok) { Console.WriteLine(Date); foreach (var text in item) { Console.WriteLine(text); } } break; case 3: Console.WriteLine("Söker bland inlägg: "); //På case 3 kan man söka efter ett specifikt inlägg med namnet på sin titel eller ett ord i innehållet. string search = Console.ReadLine(); for (int i = 0; i <Loggbok.Count; i++) { string []storage = Loggbok[i]; if (storage[i] == search) Console.WriteLine("Hittade detta inlägg: " + "\n\t" + Date + "" + //Här visas vad som hittades med datum,titel och innehållet. "\n\t" + storage[0] + "" + "\n\t" + storage[1] ); } break; case 4: list[0] = ""; //Här tas alla inlägg bort om användaren väljer case 4. list[1] = ""; Date = ""; break; case 5: Console.WriteLine("Tack för ditt besök välkommen åter"); Thread.Sleep(1000); //Avslutar programmet efter en viss tid. running = false; break; default: Console.WriteLine("Välj ett alternativ mellan 1-5"); //Texten som visas om användaren skriver något annat än vad programmet visar. break; } } } } }

Permalänk
Medlem
Skrivet av Galaxfararen:

Vart lite fel ser jag. Var inte så här när jag la in det.

använd [code][/code] runt koden så bevaras indenteringen

ex.

for(int i = 0; i < 10; i++) { Console.WriteLine(i); }

Visa signatur

| EVGA Z170 FTW | i7 6700k | ASUS RTX 3070 | 16GB DDR4 3200MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD + Samsung 970 Evo M.2 500GB |

Permalänk
Medlem

Du får ta lite mer titt på din sökning

Du börjar med att loopa igenom alla dina inlägg vilket är fine.

i=0; string[] storage = Loggbok[i];

storage innehåller nu första loggboken
Sen vill du titta på innehållet

storage[i] == search

titeln ligger på plats 0 i storage så är search a så kommer du få träff.

När du söker på b(banan) så kör vi samma sak igen

i=1; string[] storage = Loggbok[i];

storage innehåller nu andraloggboken
Sen vill du titta på innehållet

storage[i] == search

men nu är i==1 vilket gör att du jämför mot platsen där du la description.

Och skulle du ha ytterligare ett inlägg så kommer koden crasha då i==2 och din storage inte har något på plats 2

förstår du vad som blir fel?
Vet inte om ni kommit dit i kursen ännu men du bör titta på att istället för att ha ett inlägg som en lista av attribut så bör du ha en klass med attribut som du kan titta mot, kommer bli mycket tydligare då

Visa signatur

Fractal Design Node 304 -> ASUS ROG STRIX Z370-I GAMING ->i5 8600K -> be quiet! Pure Rock -> MSI GeForce RTX 4070 VENTUS 2X E 12G OC -> Corsair Vengeance LPX 3200 32GB -> Seasonic FOCUS Plus 650W Gold -> Samsung 960 EVO 500GB -> 2 * Western Digital Black 2 TB -> Samsung 850 EVO Basic SSD 500GB

Permalänk
Medlem

Du bör inte ha funktionalitet i case satserna utan anropa funktioner som gör arbetet. på så vis blir det mycket enklare att förstå hur saker fungerar och att återanvända kod.

Visa signatur

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Permalänk
Skrivet av Verdurakh:

Du får ta lite mer titt på din sökning

Du börjar med att loopa igenom alla dina inlägg vilket är fine.

i=0; string[] storage = Loggbok[i];

storage innehåller nu första loggboken
Sen vill du titta på innehållet

storage[i] == search

titeln ligger på plats 0 i storage så är search a så kommer du få träff.

När du söker på b(banan) så kör vi samma sak igen

i=1; string[] storage = Loggbok[i];

storage innehåller nu andraloggboken
Sen vill du titta på innehållet

storage[i] == search

men nu är i==1 vilket gör att du jämför mot platsen där du la description.

Och skulle du ha ytterligare ett inlägg så kommer koden crasha då i==2 och din storage inte har något på plats 2

förstår du vad som blir fel?
Vet inte om ni kommit dit i kursen ännu men du bör titta på att istället för att ha ett inlägg som en lista av attribut så bör du ha en klass med attribut som du kan titta mot, kommer bli mycket tydligare då

Jag tror jag inte förstod, jag testade på detta sätt med att skapa mer utrymme för storage men uppenbarligen vart det fel

case 3: Console.WriteLine("Söker bland inlägg: "); //På case 3 kan man söka efter ett specifikt inlägg med namnet på sin titel eller ett ord i innehållet. string search = Console.ReadLine(); storage = new string[4]; for (int i = 0; i <Loggbok.Count; i++) { storage = Loggbok[i]; if (storage[i].ToUpper() == search.ToUpper()) Console.WriteLine("Hittade detta inlägg: " + "\n\t" + Date + "" + //Här visas vad som hittades med datum,titel och innehållet. "\n\t" + storage[0] + "" + "\n\t" + storage[1] ); } break;

Permalänk
Medlem
Skrivet av Galaxfararen:

Jag tror jag inte förstod, jag testade på detta sätt med att skapa mer utrymme för storage men uppenbarligen vart det fel

case 3: Console.WriteLine("Söker bland inlägg: "); //På case 3 kan man söka efter ett specifikt inlägg med namnet på sin titel eller ett ord i innehållet. string search = Console.ReadLine(); storage = new string[4]; for (int i = 0; i <Loggbok.Count; i++) { storage = Loggbok[i]; if (storage[i].ToUpper() == search.ToUpper()) Console.WriteLine("Hittade detta inlägg: " + "\n\t" + Date + "" + //Här visas vad som hittades med datum,titel och innehållet. "\n\t" + storage[0] + "" + "\n\t" + storage[1] ); } break;

Vad har storage för funktion? Är inte storage[i] en array också i detta fall? Ska du inte söka i själva loggarna?
Se loggbok[i] som en komplett logg (titel, beskrivning, datum) sen måste du iterera denna loggbok[i] också för att få ut värdena du vill söka på. Då den innehåller arrays i en lista så bör det bli två loopar eller så kör du LINQ.

Alternativt kan du slå direkt mot titeln med Loggbok[i][0] som bör vara titeln i varje logg.
Sedan istället för att göra allt ToUpper kan du göra en case-insensitive jämförelse med string.Equals.

Detta bör slå direkt mot tieln i varje Logg i din Loggbok.

for (int i = 0; i <Loggbok.Count; i++) { var title = Loggbok[i][0]; var description = Loggbok[i][1]; if(string.Equals(title, search, StringComparison.OrdinalIgnoreCase)) { // Du har en träff! } // Alternativt gör något med description, eller baka in det i samma kontroll ovan. }

Vill du matcha på innehåll kan du istället använda Contains, equals innebär att det måste matcha helt.
Så om titeln är "En katt gick och åt glass" och du söker på "katt", så kommer du inte att få träff. Det är dock upp till kraven vad som ska kunna matchas. Rimligt är väl att köra contains på innehållet då det kan vara mycket text och man kanske vill få upp alla loggar som har ett innehåll om katter.

Edit: Missad ) i if-satsen, inte lätt på mobilen ibland
Tack @perost

Permalänk
Skrivet av zaibuf:

Vad har storage för funktion? Är inte storage[i] en array också i detta fall? Ska du inte söka i själva loggarna?
Se loggbok[i] som en komplett logg (titel, beskrivning, datum) sen måste du iterera denna loggbok[i] också för att få ut värdena du vill söka på. Då den innehåller arrays i en lista så bör det bli två loopar eller så kör du LINQ.

Alternativt kan du slå direkt mot titeln med Loggbok[i][0] som bör vara titeln i varje logg.
Sedan istället för att göra allt ToUpper kan du göra en case-insensitive jämförelse med string.Equals.

Detta bör slå direkt mot tieln i varje Logg i din Loggbok.

for (int i = 0; i <Loggbok.Count; i++) { var title = Loggbok[i][0]; var description = Loggbok[i][1]; if(string.Equals(title, search, StringComparison.OrdinalIgnoreCase) { // Du har en träff! } // Alternativt gör något med description, eller baka in det i samma kontroll ovan. }

Vill du matcha på innehåll kan du istället använda Contains, equals innebär att det måste matcha helt.
Så om titeln är "En katt gick och åt glass" och du söker på "katt", så kommer du inte att få träff. Det är dock upp till kraven vad som ska kunna matchas. Rimligt är väl att köra contains på innehållet då det kan vara mycket text och man kanske vill få upp alla loggar som har ett innehåll om katter.

Det är bra tips men när jag skriver in ditt exempel får jag ett expected fel där jag skrev in ,,,
if(string.Equals(title, search, StringComparison.OrdinalIgnoreCase),,,
{,,,

Permalänk
Medlem
Skrivet av Galaxfararen:

Det är bra tips men när jag skriver in ditt exempel får jag ett expected fel där jag skrev in ,,,
if(string.Equals(title, search, StringComparison.OrdinalIgnoreCase),,,
{,,,

Det saknas ett ) på första raden, det sista ) avslutar just nu string.Equals-anropet och inte if-villkoret.

Permalänk
Skrivet av zaibuf:

Vad har storage för funktion? Är inte storage[i] en array också i detta fall? Ska du inte söka i själva loggarna?
Se loggbok[i] som en komplett logg (titel, beskrivning, datum) sen måste du iterera denna loggbok[i] också för att få ut värdena du vill söka på. Då den innehåller arrays i en lista så bör det bli två loopar eller så kör du LINQ.

Alternativt kan du slå direkt mot titeln med Loggbok[i][0] som bör vara titeln i varje logg.
Sedan istället för att göra allt ToUpper kan du göra en case-insensitive jämförelse med string.Equals.

Detta bör slå direkt mot tieln i varje Logg i din Loggbok.

for (int i = 0; i <Loggbok.Count; i++) { var title = Loggbok[i][0]; var description = Loggbok[i][1]; if(string.Equals(title, search, StringComparison.OrdinalIgnoreCase)) { // Du har en träff! } // Alternativt gör något med description, eller baka in det i samma kontroll ovan. }

Vill du matcha på innehåll kan du istället använda Contains, equals innebär att det måste matcha helt.
Så om titeln är "En katt gick och åt glass" och du söker på "katt", så kommer du inte att få träff. Det är dock upp till kraven vad som ska kunna matchas. Rimligt är väl att köra contains på innehållet då det kan vara mycket text och man kanske vill få upp alla loggar som har ett innehåll om katter.

Edit: Missad ) i if-satsen, inte lätt på mobilen ibland
Tack @perost

Skrivet av perost:

Det saknas ett ) på första raden, det sista ) avslutar just nu string.Equals-anropet och inte if-villkoret.

Tack så mycket till er båda.
Nu funkar programmet som planerat.
Och det där med att det fattades ett ) så missade jag att det faktiskt fattades ett men tack till er båda.

Permalänk
Medlem

Loggboken C# please help

Mina kära vänner,
Jag gör programmering 1 med C #
Just nu gör jag loggbok. Jag fick tillbaka den tre gånger från min lärare.
Jag fixade det, men jag är inte säker på att det är ok.
Kan du snälla kontrollera det och låta mig veta att det är ok?
Tack så mycket för hjälpen.

using System;
using System.Collections.Generic; // Skapat för arbeta med List
namespace Loggbok
{
class Program
{
static void Main(string[] args)
{
List<string[]> loggBok = new List<string[]>(); // Här jag skapat en lista för spara stränvektor
string[] låda = new string[3]; //Här jag skapat en sträng vektor
låda[0] = "Titel:"; // Här jag gjorde 3 st.element vektorer
låda[1] = "Inlägg:";
låda[2] = "Planering:";

DateTime myValue = DateTime.Now; // Här jag lade till nuvarande tid och datum
Console.WriteLine(myValue.ToString());

bool dawnAmin = true; // While loop föråtervända till meny.

while (dawnAmin)
{
Console.WriteLine("\n\tVälkommen till loggboken!:\n" + // Här är hela menyn som jag följade flödesschema från uffgift 3
"\t[1]Skriv inlägg i logboken:\n" +
"\t[2]Skriv ut alla inlägg:\n" +
"\t[3]Sök inlägg i logboken:\n" +
"\t[4]Avsluta programmet!\n");

Console.Write("\tVälj meny: "); // användaren kan velja meny här

int nr;
int.TryParse(Console.ReadLine(), out nr); // TryParse för undantags fel hantering

switch (nr) // switch - satsen för arbeta med meny

{

case 1:

låda = new string[3];
Console.WriteLine("\tSkriv loggboken titel:\n ");

låda[0] = Console.ReadLine();
loggBok.Add(låda);

Console.WriteLine("\tSkriv ett inlägg:\n ");
låda[1] = Console.ReadLine();
loggBok.Add(låda);

Console.WriteLine("\tSkriv ett kort planering: ");
låda[2] = Console.ReadLine();
loggBok.Add(låda); // för spara alla element i listan
break;

case 2:

Console.WriteLine("\n\tHär är din inlägg i loggboken:\n ");
foreach (string[] text in loggBok) // foreach - loopen för arbeta smidigt med List
{
Console.WriteLine("\n\t{0}" + "\n\t{1}" + "\n\t{2}", text[0], text[1], text[2]);
break; // skriv ut alla vektor från listan

}
break;

case 3:

Console.Write("\n\tSkriv in ett ord för söka dina titel inlägg och planering: ");

string dawn = Console.ReadLine();
foreach (string[] text in loggBok)

for (int i = 0; i < loggBok.Count; i++) // för loop för linjar sökning
{
if ( låda[i].ToUpper() == dawn.ToUpper())
{
Console.WriteLine("\nTitel:" + text[0] + "\n" + text[1] + "\n" +text[2]);
Console.ReadLine();
}

}
break;

case 4:
dawnAmin = false; // Tillbacka till meny
break;

default:
Console.WriteLine("Fel sökning,försök igen mellan 1-4 från menyval!");// Skriv ut detta om användaren ange att annat nummer av 1-4.
break;

}

}

}

}
}

Permalänk
Medlem
Skrivet av dawn83:

Mina kära vänner,
Jag gör programmering 1 med C #
Just nu gör jag loggbok. Jag fick tillbaka den tre gånger från min lärare.
Jag fixade det, men jag är inte säker på att det är ok.
Kan du snälla kontrollera det och låta mig veta att det är ok?
Tack så mycket för hjälpen.

using System;
using System.Collections.Generic; // Skapat för arbeta med List
namespace Loggbok
{
class Program
{
static void Main(string[] args)
{
List<string[]> loggBok = new List<string[]>(); // Här jag skapat en lista för spara stränvektor
string[] låda = new string[3]; //Här jag skapat en sträng vektor
låda[0] = "Titel:"; // Här jag gjorde 3 st.element vektorer
låda[1] = "Inlägg:";
låda[2] = "Planering:";

DateTime myValue = DateTime.Now; // Här jag lade till nuvarande tid och datum
Console.WriteLine(myValue.ToString());

bool dawnAmin = true; // While loop föråtervända till meny.

while (dawnAmin)
{
Console.WriteLine("\n\tVälkommen till loggboken!:\n" + // Här är hela menyn som jag följade flödesschema från uffgift 3
"\t[1]Skriv inlägg i logboken:\n" +
"\t[2]Skriv ut alla inlägg:\n" +
"\t[3]Sök inlägg i logboken:\n" +
"\t[4]Avsluta programmet!\n");

Console.Write("\tVälj meny: "); // användaren kan velja meny här

int nr;
int.TryParse(Console.ReadLine(), out nr); // TryParse för undantags fel hantering

switch (nr) // switch - satsen för arbeta med meny

{

case 1:

låda = new string[3];
Console.WriteLine("\tSkriv loggboken titel:\n ");

låda[0] = Console.ReadLine();
loggBok.Add(låda);

Console.WriteLine("\tSkriv ett inlägg:\n ");
låda[1] = Console.ReadLine();
loggBok.Add(låda);

Console.WriteLine("\tSkriv ett kort planering: ");
låda[2] = Console.ReadLine();
loggBok.Add(låda); // för spara alla element i listan
break;

case 2:

Console.WriteLine("\n\tHär är din inlägg i loggboken:\n ");
foreach (string[] text in loggBok) // foreach - loopen för arbeta smidigt med List
{
Console.WriteLine("\n\t{0}" + "\n\t{1}" + "\n\t{2}", text[0], text[1], text[2]);
break; // skriv ut alla vektor från listan

}
break;

case 3:

Console.Write("\n\tSkriv in ett ord för söka dina titel inlägg och planering: ");

string dawn = Console.ReadLine();
foreach (string[] text in loggBok)

for (int i = 0; i < loggBok.Count; i++) // för loop för linjar sökning
{
if ( låda[i].ToUpper() == dawn.ToUpper())
{
Console.WriteLine("\nTitel:" + text[0] + "\n" + text[1] + "\n" +text[2]);
Console.ReadLine();
}

}
break;

case 4:
dawnAmin = false; // Tillbacka till meny
break;

default:
Console.WriteLine("Fel sökning,försök igen mellan 1-4 från menyval!");// Skriv ut detta om användaren ange att annat nummer av 1-4.
break;

}

}

}

}
}

låda[0] = "Titel:"; // Här jag gjorde 3 st.element vektorer låda[1] = "Inlägg:"; låda[2] = "Planering:"; DateTime myValue = DateTime.Now; // Här jag lade till nuvarande tid och datum Console.WriteLine(myValue.ToString());

Vad är planering? Ska inte ett datum sparas för loggarna?
myValue används inte någonstans i programmet förutom för att skriva ut dagens datum då du startar applikationen.
Vad är tanken med den?

case 1: låda = new string[3]; Console.WriteLine("\tSkriv loggboken titel:\n "); låda[0] = Console.ReadLine(); loggBok.Add(låda); Console.WriteLine("\tSkriv ett inlägg:\n "); låda[1] = Console.ReadLine(); loggBok.Add(låda); Console.WriteLine("\tSkriv ett kort planering: "); låda[2] = Console.ReadLine(); loggBok.Add(låda); // för spara alla element i listan break;

Här lägger du till låda tre gånger i din loggBok. Alltså skapar du tre inlägg som pekar mot samma logg.
Då du skriver ut dina loggar så kommer du att få tre av samma titel, inlägg och planering.
Det räcker att du gör en Add i slutet för hela din låda, då alla värden ligger på positioner i samma array. Du paketerar saker i din låda och sen då du är klar lägger du lådan i din lista.

case 3: Console.Write("\n\tSkriv in ett ord för söka dina titel inlägg och planering: "); string dawn = Console.ReadLine(); foreach (string[] text in loggBok) for (int i = 0; i < loggBok.Count; i++) // för loop för linjar sökning { if ( låda[i].ToUpper() == dawn.ToUpper()) { Console.WriteLine("\nTitel:" + text[0] + "\n" + text[1] + "\n" +text[2]); Console.ReadLine(); }

Din sökning kommer inte att fungera. Du letar bara i låda[i] vilket är din deklarerade array i toppen av programmet, som endast innehåller senaste loggen.
Du behöver nästa en till loop för att iterera dina arrays inne i loggBoken, alternativt göra slagningar direkt mot inre index genom att sätta dubbla square brackets. T.ex. loggBok[i][0] kommer att vara titeln i varje logg.

bool dawnAmin = true; // While loop föråtervända till meny. while (dawnAmin) string dawn = Console.ReadLine();

Variabler ska beskriva vad de gör så att man som läsare ska förstå koden. Detta påverkar inte hur programmet fungerar, men det blir mycket enklare för någon annan att förstå hur du tänkt. Vad är dawnAmin och dawn?

Mer passande namn skulle kunna vara:

bool isRunning = true; // While loop föråtervända till meny. while (isRunning) string searchTerm = Console.ReadLine();

Sen har du en del stavfel och särskrivningar i kommentarerna. Påverkar inte programmet, men ser lite hafsigt ut att läsa.

Permalänk
Medlem

loggbok med C#

Hej Igen,
Jag skulle vilja vara tacksam till dig.
Jag fixade lite som jag förstod från dig. Kan du snälla titta? Jag är helt ny i denna programmering, det är anledningen till att det är mycket svårt för mig.

Tack igen för din hjälp.

Permalänk
Medlem

using System;
using System.Collections.Generic; // Skapat för arbeta med List
namespace Loggbok
{
class Program
{
static void Main(string[] args)
{
List<string[]> loggBok = new List<string[]>(); // Här jag skapat en lista för spara stränvektor
string[] låda = new string[3]; //Här jag skapat en sträng vektor
låda[0] = "Titel:"; // Här jag gjorde 3 st.element vektorer
låda[1] = "Inlägg:";
låda[2] = "Planering:";

DateTime myValue = DateTime.Now; // Här jag lade till nuvarande tid och datum
Console.WriteLine(myValue.ToString());

bool dawnAmin = true; // While loop föråtervända till meny.

while (dawnAmin)
{
Console.WriteLine("\n\tVälkommen till loggboken!:\n" + // Här är hela menyn som jag följade flödesschema från uffgift 3
"\t[1]Skriv inlägg i logboken:\n" +
"\t[2]Skriv ut alla inlägg:\n" +
"\t[3]Sök inlägg i logboken:\n" +
"\t[4]Avsluta programmet!\n");

Console.Write("\tVälj meny: "); // användaren kan velja meny här

int nr;
int.TryParse(Console.ReadLine(), out nr); // TryParse för undantags fel hantering

switch (nr) // switch - satsen för arbeta med meny

{

case 1:

låda = new string[3];
Console.WriteLine("\tSkriv loggboken titel:\n ");

låda[0] = Console.ReadLine();

Console.WriteLine("\tSkriv ett inlägg:\n ");
låda[1] = Console.ReadLine();

Console.WriteLine("\tSkriv ett kort planering: ");
låda[2] = Console.ReadLine();
loggBok.Add(låda); // för spara alla element i listan
break;

case 2:

Console.WriteLine("\n\tHär är din inlägg i loggboken:\n ");
foreach (string[] text in loggBok) // foreach - loopen för arbeta smidigt med List
{
Console.WriteLine("\n\t{0}" + "\n\t{1}" + "\n\t{2}", text[0], text[1], text[2]);
// skriv ut alla vektor från listan

}
break;

case 3:

Console.Write("\n\tSkriv in ett ord för söka dina titel inlägg och planering: ");

string farhana = Console.ReadLine();
foreach (string[] text in loggBok)

for (int i = 0; i < loggBok.Count; i++) // för loop för linjar sökning
{
if (loggBok[i][0].ToUpper() == farhana.ToUpper())
{
Console.WriteLine("\nTitel:" + text[0]+"\n" +text [1] +"\n" +text [2] );
Console.ReadLine();
}

}
break;

case 4:
dawnAmin = false; // Tillbacka till meny
break;

default:
Console.WriteLine("Fel sökning,försök igen mellan 1-4 från menyval!");// Skriv ut detta om användaren ange att annat nummer av 1-4.
break;

}

}

}

}
}

Permalänk
Medlem

Ett tips till alla, använd variabelnamn på engelska för att få in vanan

Visa signatur

Ryzen 7 7800X3D | Nvidia Geforce RTX 4070 Ti 12gb | Corsair Vengeance DDR5 6000MHz RGB CL30 2x16GB | EVGA Supernova G2 750W | ASUS ROG Strix B650E-F Gaming | Be Quiet! Dark Rock Pro 5
Citera för svar!

Permalänk
Medlem

string[] låda = new string[3]; //Här jag skapat en sträng vektor låda[0] = "Titel:"; // Här jag gjorde 3 st.element vektorer låda[1] = "Inlägg:"; låda[2] = "Planering:";

Varför gör du detta?
Första gången du skriver ett nytt inlägg skrivs dessa värden över och blir aldrig sparade någonstans, så det är egentligen helt onödigt.
Du kan ha kvar instansieringen av låda, men tilldelningen av värden är onödig.

Som redan nämnts är det onödigt att spara undan DateTime.Now i en variabel när den endast används på raden direkt nedanför.
Du kan lika gärna skriva Console.WriteLine(DateTime.Now.ToString()); direkt istället.

Du använder fortfarande variabelnamnen dawnAmin och farhana. Som sagt är dessa variabelnamn otydliga och talar inte alls om vad de är till för. Var alltid noggrann med hur du döper variabler, det ska gå att förstå koden utan en massa kommentarer.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem

Tack vän,
Kan göra kolla i case 3 som sökning.
Min Lärare kommenter är
” Sökningen utgår från "låda", som är senast sparade vektorn, och kan inte söka i alla inlägg. Utgå från listans alla sparade inlägg, inte "låda". Jag visade exempel på det här i det senaste meddelandet.

Stort tack för hjälpen.

Permalänk
Medlem
Skrivet av dawn83:

Tack vän,
Kan göra kolla i case 3 som sökning.
Min Lärare kommenter är
” Sökningen utgår från "låda", som är senast sparade vektorn, och kan inte söka i alla inlägg. Utgå från listans alla sparade inlägg, inte "låda". Jag visade exempel på det här i det senaste meddelandet.

Stort tack för hjälpen.

Det var detta jag påpekade i mitt inlägg och hur du skulle göra istället.
Om man översätter koden till pseudokod för att förstå flödet för hur sökningen ska fungera så kanske det är lättare att förstå.

FÖR VARJE logg I loggBoken
FÖR VARJE textfält I logg
OM textfälteet ÄR LIKA MED sökordet
SKRIV UT textfälten I logg

case 3: Console.Write("\n\tSkriv in ett ord för söka dina titel inlägg och planering: "); string farhana = Console.ReadLine(); foreach (string[] text in loggBok) for (int i = 0; i < loggBok.Count; i++) // för loop för linjar sökning { if (loggBok[i][0].ToUpper() == farhana.ToUpper()) { Console.WriteLine("\nTitel:" + text[0]+"\n" +text [1] +"\n" +text [2] ); Console.ReadLine(); } } break;

Just nu gör du en foreach på loggBok, som för övrigt saknar brackets så det bör inte ens kompilera.
Text är varje "loggboks-låda" dvs. titel, beskrivning och planering för ett inlägg.
Sedan nästlar du en loop som kommer att gå igenom varje logg, här ska du inte använda loggBok.Count, istället vill du använda längden på din array, text.Length.

for (int i = 0; i < text.Length; i++) // för loop för linjar sökning

Och då blir din jämförelse istället:

if (text[i].ToUpper() == farhana.ToUpper())

Vill du istället enbart söka på titlarna i varje logg så behöver du inte denna extra loop utan kan söka via en for-loop.

for (int i = 0; i < loggBok.Count; i++) { if(loggBok[i][0].ToUpper() == farhana.ToUpper()) // Träff }

Tycker inte att farhana är bättre än dawn du hade tidigare. Bättre om du använder t.ex. search, searchWord, searchTerm, searchString eller liknande. Då förstår man direkt vad variabeln ska användas till.

Permalänk
Medlem

Tack

Hej igen!
Stort tack.
MVH
Dawn