C# Strängvektorer Spara fler inlägg

Permalänk

C# Strängvektorer Spara fler inlägg

Hej, Hoppas du/ni kan ha överseende då jag är ny student i C#
Finns det någon som kan leda mig i rätt riktning. Vi håller på med uppgiften "Bloggen" och ska kunna skapa och spara nya inlägg. Läraren har skrivit att vi behöver skapa en ny strängvektor för varje inlägg. Problemet är att jag inte alls förstår hur han menar. Har testat själv flera gånger men lyckas inte riktigt. Väldigt tacksam för lite vägledning.

En annan men mindre betydelsefull fråga är, varför TryParse bara tar väldigt stora tal eller text, den reagerar ej på mindre tal.

//Deklarerar en lista innehållande array
//Initiering av array som innehåller 3 element
List<String[]> MinBlogg = new List<String[]>();

//Skapar en strängvektor för inlägg, 3 platser element för: titel, inlägg, datum och tid
String[] Inlägg = new String[3];

//Deklarerar en bool som är true
bool IsRunning = true;

//Vill bara att text ska skrivas ut en gång och sätter den utanför loop
//n för ny rad, t för tabb
Console.WriteLine("\n\tVälkommen! ");

//Deklarerar en int för menyval
int MenyVal;

//SÅ LÄNGE bool är true kommer while loop fortsätta
while (IsRunning)
{

//n för ny rad, t för tabb
//Den här texten skrivs ut som menyval
Console.WriteLine("\n\tGör ett val 1-5: ");
Console.WriteLine("\n\t[1]Skapa ett inlägg");
Console.WriteLine("\t[2]Visa sparade inlägg");
Console.WriteLine("\t[3]Sök bland inlägg");
Console.WriteLine("\t[4]Radera inlägg");
Console.WriteLine("\t[5]Avsluta programmet");

//Deklarerar en if
//TryParse för att program ej ska krascha. TryParse returnerar true om TryParse lyckas
if (Int32.TryParse(Console.ReadLine(), out MenyVal))

//VARFÖR TAR INTE TRYPARSE MINDRE TAL? TEX 35 99 86 OSV.DEN TAR STORA TAL OCH TEXT!TEX 972804826852805 ELLER HEJSAN
{

}

else
{
//ANNARS om TryParse inte lyckas, skriver programmet ut text nedan
Console.WriteLine("\tNågon blev fel! Vänligen skriv en siffra 1-5");
}
//Deklarerar en switch för menyVal
switch (MenyVal)
{
case 1:

//Skapar array/vektor för varje inlägg
//Sparar titel i index 0 (första elementet)
Console.Write("\tAnge en titel för ditt inlägg: ");
Inlägg[0] = Console.ReadLine();

//sparar inlägget i index 1 (andra elementet)
Console.WriteLine("Skriv ditt inlägg:");
Inlägg[1] = Console.ReadLine();

//sparar tiden i index 2 (tredje elementet)
Inlägg[2] = DateTime.Now.ToString();

//Sparar inlägg i MinBlogg
//Skriver ut att inlägget är sparat
MinBlogg.Add(Inlägg);
Console.WriteLine("Ditt inlägg är nu sparat!");
//HUR KAN JAG GÖRA DET MÖJLIGT ATT SKAPA OCH SPARA FLER INLÄGG?

break;

case 2:
/*
*Console.WriteLine("Nedan är dina skrivna inlägg:"); Skriver ut texten
Console.WriteLine(----); Gör det mer överskådligt att läsa inläggen. Nedan är dina skrivna inlägg
----------------------
Datum/Tid: Titel: Inlägg
Foreach går igenom alla sparade inlägg i MinBlogg*/
Console.WriteLine("\n Nedan är dina skrivna inlägg:\n");
Console.WriteLine("\n\t-------------------\n\t");
foreach (string[] DittInlägg in MinBlogg)

//Skriver ut alla arrays: Datum/Tid: Titel: Inlägg: Lagt array 2 först eftersom jag vill ha ut datum och klockslag först
Console.WriteLine("\n Puplicerat: " + DittInlägg[2] + " \n Titel - " + DittInlägg[0] + " \n Inlägg - " + DittInlägg[1] + "\n");

break;

case 3:

break;

}
}

}
}
}

Permalänk
Medlem

Problemet är att C# använder referenser för t.ex. arrayer, så t.ex.:

String[] arr1 = {"string1"}; // arr1 pekar på en array String[] arr2 = {"string2"}; // arr2 pekar på en annan array arr2 = arr1; // arr2 pekar nu på samma array som arr1 arr2[0] = "string3"; // Ändrar på arrayen som både arr1 och arr2 pekar på. Console.WriteLine(arr1[0]); // Skriver ut string3

Problemet är alltså att du har en enda array, den som Inlägg pekar på, och varje gång du kör MinBlogg.Add(Inlägg) så lägger du bara till en referens till den arrayen i listan. När du sen lägger in ny data i Inlägg så skrivs den föregående datan i arrayen över.

Lösningen är att istället använda variabler med kortare livstid, t.ex.:

List<String[]> MinBlogg = new List<String[]>(); for (int i = 1; i <= 10; i++) { String[] inlägg = {"inlägg " + i.toString(), "text", "datum"}; MinBlogg.Add(inlägg); }

Skillnaden här är att inlägg endast existerar i blocket som hör till for-satsen, d.v.s. variabeln "dör" när koden når slutet av blocket. Varje gång blocket exekveras av for-satsen så skapas därför en ny variabel som pekar på en ny array, så efter att for-loopen körts så innehåller MinBlogg 10 referenser till 10 arrayer (istället för 10 referenser till samma array som i ditt fall).

Slutmoralen är därför att alltid försöka deklarera variabler så nära där de används som möjligt, då undviker du oftast såna här problem. D.v.s. deklarera din array precis före där du börjar läsa in data från användaren istället för längst upp i Main, då kommer en ny array skapas varje gång switch-satsen exekveras.

Permalänk

Jag tror inte jag förstår riktigt. Jag kan inte flytta ner dessa? då kan de inte upptäckas i de andra casen
List<String[]> MinBlogg = new List<String[]>();
String[] Inlägg = new String[3];
Min lärare har skrivit att vi måste göra nya strängVektorer för varje inlägg. Men jag förstår nog inte vad som är vad längre. Känner mig väldigt förvirrad.
String[] Inlägg = new String[3]; är väl strängvektorn? Då menar han att jag ska skapa nya såna för varje inlägg eller har jag missuppfattat?

Permalänk
Medlem
Skrivet av CSharpStudent:

Jag tror inte jag förstår riktigt. Jag kan inte flytta ner dessa? då kan de inte upptäckas i de andra casen
List<String[]> MinBlogg = new List<String[]>();
String[] Inlägg = new String[3];
Min lärare har skrivit att vi måste göra nya strängVektorer för varje inlägg. Men jag förstår nog inte vad som är vad längre. Känner mig väldigt förvirrad.
String[] Inlägg = new String[3]; är väl strängvektorn? Då menar han att jag ska skapa nya såna för varje inlägg eller har jag missuppfattat?

Du ska inte flytta ner MinBlogg, den ska ju leva så länge programmet körs och måste därför deklareras utanför while-loopen. Vad du däremot ska flytta ner är Inlägg, du vill inte ha en array-variabel för hela programmet utan du vill skapa en ny varje gång du behöver läsa in ett nytt inlägg.

Du måste alltså deklarera Inlägg åtminstone inom while-loopen så att det skapas en ny array varje gång loopen börjar om på en ny iteration. Men normalt så vill man deklarera variabler så nära där de används som möjligt för att inte "förorena" andra block med en massa variabler de inte använder, så du bör deklarera Inlägg precis innan du börjar läsa in inlägget.

En liten stilsak är förresten att variabler i C# normalt börjar med liten bokstav, medan klasser börjar med stor. Så t.ex. MinBlogg skulle normalt heta minBlogg istället. Det är inget krav, men det underlättar när man börjar använda mer klasser att direkt kunna se om något är en variabel eller klass.

Permalänk

Ahaa, nu gick det upp ett ljus i liljeholmen! Supertack! Vet du varför min TryParse inte alls tar mindre tal? den tar stora tal och texter

Permalänk

Haha så trevlig!

Permalänk
Medlem
Skrivet av CSharpStudent:

Haha så trevlig!

Vad är meningen med TryParse? Vad menar du med att den inte tar texter?

Visa signatur

Why would a dragon hoard gold? Because the dragon represents everything that you’re afraid of. What’s embedded in everything you’re afraid of? Absolutely everything that you need to find. Run from what you’re afraid of, run from exactly what you need to find. Dragons hoard gold because the thing you most need is always to be found where you least want to look. What happens if you go after the dragon? - Jordan Peterson

Permalänk

TryParse

Min TryParse fungerar inte helt ok. Den svarar inte alls om man skriver mindre tal. Fungerar bra om användaren skulle skriva bokstav eller väldigt stora siffror. Vad har jag gjort för fel?

//Deklarerar en lista med namnet minBlogg innehållande array
List<String[]> minBlogg = new List<String[]>();

//Deklarerar en bool som är true, blir den false, kommer while loop nedan brytas
bool isRunning = true;

/*1.Vill bara att Välkommen ska skrivas ut en gång och sätter den därför utanför loop
2.n för ny rad, t för tabb*/
Console.WriteLine("\n\tVälkommen! ");

//Deklarerar While. SÅ LÄNGE bool är true kommer while loop fortsätta.
while (isRunning)
{

/*1.n för ny rad, t för tabb
2.Texten nedan skrivs ut som menyval*/
Console.WriteLine("\n\tGör ett val 1-5: ");
Console.WriteLine("\n\t[1]Skapa ett inlägg");
Console.WriteLine("\t[2]Visa sparade inlägg");
Console.WriteLine("\t[3]Sök bland inlägg");
Console.WriteLine("\t[4]Radera inlägg");
Console.WriteLine("\t[5]Avsluta programmet");

/*1.Deklarerar en int för menyval
2.Deklarerar en if, för att TryParse ska exekveras om användare skriver annat än 1-5
3.TryParse returnerar bool true om TryParse lyckas.*/
int menyVal;
if (Int32.TryParse(Console.ReadLine(), out menyVal))

//VARFÖR TAR INTE TRYPARSE MINDRE TAL?
{

}
//Deklarerar en else som exekveras om TryParse ej lyckas.
else
{
//ANNARS om TryParse inte lyckas, skriver programmet ut information nedan till användaren.
Console.WriteLine("\tNågon blev fel! Vänligen skriv en siffra 1-5");
}
//Deklarerar en switch för menyVal.
switch (menyVal)
{
case 1:
/*1.Skapar en case 1: start på första kodblocket i switchen
2.Initiering av strängvektor med 3 element, platser för: titel, inlägg, datum / tid.
3.Deklarerar strängvektorn efter whileloop för att jag vill att användare ska kunna spara flera inlägg,utan att det gamla inlägget skrivs över. Array loopas.
4.Skriver ut instruktion till användare.
5.Sparar titel i index 0 (första elementet) */
String[] Inlägg = new String[3];
Console.Write("\tAnge en titel för ditt inlägg: ");
Inlägg[0] = Console.ReadLine();

//1.Skriver ut instruktion till användare
//2.Sparar inlägget i index 1 (andra elementet)
Console.WriteLine("Skriv ditt inlägg:");
Inlägg[1] = Console.ReadLine();

//1.Sparar datum/tid i index 2 (tredje elementet)
Inlägg[2] = DateTime.Now.ToString();

/*1.Sparar titel,inlägg,tid i minBlogg med Addmetoden
2.Skriver ut information till användaren
3.break; Slut på detta kodblock*/
minBlogg.Add(Inlägg);
Console.WriteLine("Ditt inlägg är nu sparat!");

break;

case 2:
/*1.Skapar en case 2: start på andra kodblocket i switchen
*2.Skriver ut information till användaren.
3.Console.WriteLine(----); Gör det mer överskådligt att läsa inläggen.
Nedan är dina skrivna inlägg
----------------------
Datum/Tid: Titel: Inlägg
4.Foreach går igenom alla sparade inlägg i minBlogg*/
Console.WriteLine("\n Dina inlägg: \n");
Console.WriteLine("\n\t-------------------\n\t");
foreach (string[] dittInlägg in minBlogg)

/*1.Skriver ut alla arrays: Datum/Tid: Titel: Inlägg: Lagt array 2 först eftersom jag vill ha ut datum och klockslag först.
2.break; Avslutar detta kodblock */
Console.WriteLine("\n Puplicerat: " + dittInlägg[2] + " \n Titel - " + dittInlägg[0] + " \n Inlägg - " + dittInlägg[1] + "\n");

break;

case 3:

break;

case 4:
//Raderar alla inlägg
minBlogg.Clear();
Console.WriteLine("\nAlla inlägg är nu rensade.");

break;

case 5:
/*1.Skriver ut information
2.*/
Console.WriteLine("Välkommen tillbaka!");
Thread.Sleep(1000);
isRunning = false;

break;

}
}

}
}
}

Permalänk
Medlem

Du får gärna beskriva felet som du upplever lite mer.
Vad menar du med att den inte tar mindre tal?

Jag testkörde, skrev 1, fick skriva titel och inlägg utan problem

Visa signatur

Fractal Design Node 304 -> ASUS ROG Strix B650E-I Gaming WIFI -> AMD Ryzen 7 7800X3D 4. 2GHz 104MB -> Thermalright Peerless Assassin 120 SE Svart -> MSI GeForce RTX 4070 VENTUS 2X E 12G OC -> G.Skill 32GB (2x16GB)DDR5 6000MHz CL30 Trident Z Ne -> Seasonic FOCUS Plus 650W Gold -> 2 x WD BLACK SN850X SSD 2TB

Permalänk
Medlem

Använd kodblock:

[ code][ /code]

(fast utan mellanslag)

Permalänk
Skrivet av Verdurakh:

Du får gärna beskriva felet som du upplever lite mer.
Vad menar du med att den inte tar mindre tal?

Jag testkörde, skrev 1, fick skriva titel och inlägg utan problem

Okej. Ja man ska ju kunna göra det. Tanken är att den ska fånga allt utanför 1-5 som då leder till felmeddelandet. Skriver du 6 osv kommer den inte göra något.

Välkommen!

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet
6

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet

09786756453454657687
Någon blev fel! Vänligen skriv en siffra 1-5

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet
hej
Någon blev fel! Vänligen skriv en siffra 1-5

Permalänk
Medlem

Du behöver en if sats som kontrollerar så siffran inte är större än 5 eller mindre än 1

Permalänk
Medlem

Du har inget default case i din switch sats.

Default är det som utförs, ifall inget annat case identifieras.

Permalänk
Skrivet av Chawa:

Du har inget default case i din switch sats.

Default är det som utförs, ifall inget annat case identifieras.

Har testat att köra med Default med men det fungerar ej :/

Permalänk
Skrivet av Giuffria:

Du behöver en if sats som kontrollerar så siffran inte är större än 5 eller mindre än 1

Tack!

Permalänk
Medlem

Jaha, ja som andra skrev så behöver du ju då göra en kontroll av värdet, 1-5, allt int.tryparse gör är att försöka göra om inputen till en int och den har ju inget med det villkoret att göra.

Sen om något är fel så behöver du ju inte ens gå igenom switchen utan kolla på att köra en Continue.

Du kan ocskå ta bort den tomma {} efter int.parse:en och kanske köra ! framför då du vill ta den actionen om den inte är en int.

Visa signatur

Fractal Design Node 304 -> ASUS ROG Strix B650E-I Gaming WIFI -> AMD Ryzen 7 7800X3D 4. 2GHz 104MB -> Thermalright Peerless Assassin 120 SE Svart -> MSI GeForce RTX 4070 VENTUS 2X E 12G OC -> G.Skill 32GB (2x16GB)DDR5 6000MHz CL30 Trident Z Ne -> Seasonic FOCUS Plus 650W Gold -> 2 x WD BLACK SN850X SSD 2TB

Permalänk

Sökfunktion ToUpper

Hej! i case 3 ligger min sökfuntion, som fungerade bra till jag la in in Console.WriteLine(sökord.ToUpper()); i case 3. Jag vill ha ToUpper funktionen så det inte ska spela någon roll om användare knappar in med stora bokstäver eller ej. Problemet är att sökfunktionen inte alls fungerar när jag lagt in koden för ToUpper. Har lagt in konsollfönster längst ner i koden. Hur ska jag tänka här och varför blir det fel?

//Deklarerar en lista med namnet minBlogg innehållande array
List<String[]> minBlogg = new List<String[]>();

//Deklarerar en bool som är true, blir den false, kommer while loop nedan brytas
bool isRunning = true;

/*1.Vill bara att Välkommen ska skrivas ut en gång och sätter den därför utanför loop
2.n för ny rad, t för tabb*/
Console.WriteLine("\n\tVälkommen! ");

//Deklarerar While. SÅ LÄNGE bool är true kommer while loop fortsätta.
while (isRunning)
{

/*1.n för ny rad, t för tabb
2.Texten nedan skrivs ut som menyval*/
Console.WriteLine("\n\tGör ett val 1-5: ");
Console.WriteLine("\n\t[1]Skapa ett inlägg");
Console.WriteLine("\t[2]Visa sparade inlägg");
Console.WriteLine("\t[3]Sök bland inlägg");
Console.WriteLine("\t[4]Radera inlägg");
Console.WriteLine("\t[5]Avsluta programmet");

/*1.Deklarerar en int för menyval
2.Deklarerar en if, för att TryParse ska exekveras om användare skriver annat än 1-5
3.TryParse returnerar bool true om TryParse lyckas.*/
int menyVal;
Int32.TryParse(Console.ReadLine(), out menyVal);

//Deklarerar en switch för menyVal.
switch (menyVal)
{
case 1:
/*1.Skapar en case 1: start på första kodblocket i switchen
2.Initiering av strängvektor med 3 element, platser för: titel, inlägg, datum / tid.
3.Deklarerar strängvektorn efter whileloop för att jag vill att användare ska kunna spara flera inlägg,utan att det gamla inlägget skrivs över. Array loopas.
4.Skriver ut instruktion till användare.
5.Sparar titel i index 0 (första elementet)
6.Endast till för att göra texten mer lättöverskådlig
6.1.t för tabb n för ny rad*/
String[] Inlägg = new String[3];
Console.Write("\tAnge en titel för ditt inlägg: ");
Inlägg[0] = Console.ReadLine();
Console.WriteLine("\n\t-------------------\n\t");

/*1.Skriver ut instruktion till användare
1.1.Skriver ut instruktion till användare
2.Sparar inlägget i index 1 (andra elementet)*/
Console.WriteLine("\tSkriv ditt inlägg och tryck enter för att spara : ");

Inlägg[1] = Console.ReadLine();

//1.Sparar datum/tid i index 2 (tredje elementet)
Inlägg[2] = DateTime.Now.ToString();

/*1.Sparar titel,inlägg,tid i minBlogg med Addmetoden
2.Endast till för att göra texten mer lättöverskådlig
2.1.Skriver ut information till användaren
3.break; Slut på detta kodblock*/
minBlogg.Add(Inlägg);
Console.WriteLine("\n\t-------------------\n\t");
Console.WriteLine("Ditt inlägg är nu sparat!");
break;

case 2:
/*1.case 2: start på andra kodblocket i switchen
2.Skriver ut information till användaren.
3.Console.WriteLine(----); Gör det mer överskådligt att läsa inläggen.
Nedan är dina skrivna inlägg
----------------------
Datum/Tid: Titel: Inlägg
4.Foreach loopar igenom alla sparade inlägg i minBlogg*/
Console.WriteLine("\n Dina inlägg: \n");
Console.WriteLine("\n\t-------------------\n\t");
foreach (string[] dittInlägg in minBlogg)

/*1.Skriver ut alla arrays: Datum/Tid: Titel: Inlägg: Lagt array 2 först eftersom jag vill ha ut datum och klockslag först.
2.break; Avslutar detta kodblock */
Console.WriteLine("\n Puplicerat: " + dittInlägg[2] + " \n Titel - " + dittInlägg[0] + " \n Inlägg - " + dittInlägg[1] + "\n");

break;

case 3:

/*1.case 3: Startar detta kodblock.
2.Skriver ut information till användare
3.Deklarerar en string med variabelnamn sökord, det användare knappar in som sökord
4.foreach loopar igenom alla inlägg som finns i variabelnamn minBlogg
5.Deklarerar en if, om inlägg med index 0 innehåller sökord eller om inlägg med index 1 innehåller sökord, kommer nästa kodrad exekveras
6.Skriver ut text + Datum + Titel + Inlägg. Har lagt inlägg[2] först för att det blev en snygg ordning med datum högst upp*/
Console.WriteLine("Sök på titel eller del av text: ");
string sökord = Console.ReadLine();
Console.WriteLine(sökord.ToUpper());
foreach (string[] inlägg in minBlogg)
{

if (inlägg[0].Contains(sökord) || inlägg[1].Contains(sökord))
{
Console.Write("\nSökning gav träffen: " + "\n\t-------------------\n\t" + inlägg[2] + "\n\t" + "Titel:" + inlägg[0] + "\n\t" +"Inlägg:"+ inlägg[1]);
}
}

break;

Permalänk
Medlem

Hej,

Använd gärna [code]-taggar så att det enklare går att läsa din kod. Av ditt användarnamn att döma chansar jag på att det rör sig om C#, men det kan vara bra att förtydliga.

Varför tror du att sökfunktionen inte fungerar alls? Du behöver beskriva ditt problem bättre.

Visa signatur

AMD Ryzen 7 5800X | 32 GB Corsair Vengeance 3200 MHz | ASUS TUF Geforce RTX 3080

Permalänk
Medlem

Lite svårt att läsa koden när det inte är formaterat, men om du vill att sökord ska vara i stora bokstäver så måste du spara ner det i en variabel, det räcker inte att bara kalla på sökord.ToUpper(), utan det måste sparas som t.ex sökord = sökord.ToUpper();

När du säger att koden inte alls fungerar, vad menar du då? Får du något exception?

Permalänk
Moderator
Brons i quiz

@CSharpStudent: Jag har sammanfogat dina trådar, vänligen håll dig till en och samma tråd istället för att skapa nya samt var god och använd

[ CODE] INSERT CODE HERE [/ CODE] (utan mellanslag)

när du postar din kod i forumet!!

/Vzano, Moderator

Visa signatur

Citera om du vill ha svar!
Tycker du om sidospår? :D Besök The Wiki Game
Har du fråga angående modereringen? PM till Moderatorerna eller Kontaktformulär

Permalänk
Skrivet av L'ombra:

Hej,

Använd gärna [code]-taggar så att det enklare går att läsa din kod. Av ditt användarnamn att döma chansar jag på att det rör sig om C#, men det kan vara bra att förtydliga.

Varför tror du att sökfunktionen inte fungerar alls? Du behöver beskriva ditt problem bättre.

Okej jag förstår. Lägger man bara [ ] runt hela koden för att den ska bli lättare att läsa här?
Ska försöka förklara bättre. Är helt ny på detta och därför är det svårt att veta exakt vilka begrepp jag bör använda för att förtydliga. Det stämmer att det rör sig om ett arbete i C#

Jag vet att sökfunktionen ej fungerar längre pga koden ToUpper, eftersom sökfunktionen fungerade innan jag la in koden ToUpper. Jag behöver veta varför den inte fungerar pga ToUpper och hur jag egentligen borde göra för att få min ToUpper att fungera som den ska, utan att den krockar med sökfunktionen som den gör just nu.

Permalänk
Skrivet av Vzano:

@CSharpStudent: Jag har sammanfogat dina trådar, vänligen håll dig till en och samma tråd istället för att skapa nya samt var god och använd

[ CODE] INSERT CODE HERE [/ CODE] (utan mellanslag)

när du postar din kod i forumet!!

/Vzano, Moderator

Okej tack då förstår jag Letade efter hur man gjorde innan men kunde inte hitta det någonstans.

Permalänk
Skrivet av Vzano:

@CSharpStudent: Jag har sammanfogat dina trådar, vänligen håll dig till en och samma tråd istället för att skapa nya samt var god och använd

[ CODE] INSERT CODE HERE [/ CODE] (utan mellanslag)

när du postar din kod i forumet!!

/Vzano, Moderator

Okej tack.

Permalänk
Skrivet av mbillgren:

Lite svårt att läsa koden när det inte är formaterat, men om du vill att sökord ska vara i stora bokstäver så måste du spara ner det i en variabel, det räcker inte att bara kalla på sökord.ToUpper(), utan det måste sparas som t.ex sökord = sökord.ToUpper();

När du säger att koden inte alls fungerar, vad menar du då? Får du något exception?

Ja okej, det låter vettigt. Ska prova det och se om det fungerar.
Vad jag menar med att sökfunktionen slutar fungera, är att det ser ut såhär i konsollfönstret.
Söker användaren titeln med stora bokstäver, får användaren bara ut exakt det användaren nyss skrev.

Välkommen!

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet
1
Ange en titel för ditt inlägg: bloggen

-------------------

Skriv ditt inlägg och tryck enter för att spara :
Nästan klar

-------------------

Ditt inlägg är nu sparat!

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet
1
Ange en titel för ditt inlägg: Sökfunktion

-------------------

Skriv ditt inlägg och tryck enter för att spara :
Fungerar ej med ToUpper

-------------------

Ditt inlägg är nu sparat!

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet
3
Sök på titel eller del av text:
SÖKFUNKTION
SÖKFUNKTION

Gör ett val 1-5:

[1]Skapa ett inlägg
[2]Visa sparade inlägg
[3]Sök bland inlägg
[4]Radera inlägg
[5]Avsluta programmet

Permalänk
Medlem

Om du bara skriver all användar input i gemener eller versaler så borde det väl fortfarande fungera? Jag tror att problemet är att om du gör strängen som sparas i variabeln sökord till versaler och strängarna i inlägg[0] eller inlägg[1] inte är i versaler kommer koden innanför if satsen aldrig att exekveras.

Ett tips är att använda din debugger i din IDE och sätt ett breakpoint där if satsen börjar. Då borde du se vad som går snett.

Permalänk

Sökresultat visar bara titel, inte inlägg

Har ändrat en del för att den ska hitta inlägg i alla positioner men nu visar den bara titel i konsollfönstret inte själva inlägget. Jag vill att den ska visa både titel och inlägg i sitt sökresultat. Någon som vet hur? Har hållt på med just sökfunktionen i flera dagar nu och får verkligen inte rätt på detta.

case 3: //Ber användaren att göra en sökning. Console.WriteLine("Sök på titel: \n"); //Skapar en ny sträng variabel som blir sökningen som matas in av användaren. string sökord = Console.ReadLine(); //skapar ytterligare en bool för att göra det enklare för programmet att söka i listan efter det inmatade sökordet. bool sökning = false; //For loopen hjälper oss att bläddra genom varje element. for (int i = 0; i < minBlogg.Count; i++) { // Använder mig utav en jämförelseoperator. // Skapar en extra for loop för att loopa min inre array och göra det möjligt att hitta inlägg i alla positioner. for (int j = 0; j < minBlogg[i].Length; j++) { if (minBlogg[i][j].ToUpper() == sökord.ToUpper()) { // Matchar sökordet och listan så får användaren följande meddelande utskrivet på skärmen. Console.WriteLine("Det här är vad vi hittade:" + minBlogg[i][0], minBlogg[i][1]); Console.WriteLine("\nGör ett nytt val i menyn:"); Console.WriteLine("\n" + "_______________________________________" + "\n\t"); sökning = true; } } } //Om sökordet inte hittas skrivs följande ut i konsollfönster. //break slut på kodblock i kodblock if (!sökning) { Console.WriteLine("\nSökningen gav inget resultat, vänligen försök igen " + "\n"); break; } //slut på hela kodblocket break;