C# Hjälp med programmering 1 uppgift bloggen

Permalänk

C# Hjälp med programmering 1 uppgift bloggen

Hej, jag behöver verkligen hjälp med en uppgift i programmering 1, uppgiften heter bloggen.
Jag har läst och gått igen i boken och de kurmaterial vi har och kontaktat läraren som gav ett svagt svar, har även försökt hitta någon slags hjälp med att söka på internet. Detta är mitt sista hopp på att försöka klara uppgiften.
Jag är fast på att söka bland inlägg. Allt annat funkar som det ska, jag kan söka upp första inlägget men inget annat. Vad ska jag göra och vad gör jag fel? Om ni kan vara noga i er förklaring hade de varit bra då jag tydligen är för dum för att fatta hur jag ska göra.
Det är case 3 som jag har problem med.

case 3: Console.WriteLine("\t Sök efter titeln: "); string userInput = Console.ReadLine(); //Deklarerar forför att kunna söka i programmet. //konektar string med minBlogg så får jag fram innehållet. for (int i = 0; i < minBlogg.Count; i++) { string[] storage = minBlogg[i]; if (userInput == storage[i]) { Console.WriteLine("\t Här är inlägget: \n\t Titel: " + (storage[0] + "\n\t Inlägg: " + storage[1] + "\n\t Publicerat: " + storage[2] + "\n\t"); } else { Console.WriteLine("\t " + i + "Hittas inte, försök igen!"); } } Console.ReadLine(); Console.Clear(); break;

Permalänk
Medlem

Om vi bryter ner din for-loop:

for (int i = 0; i < minBlogg.Count; i++)

ser rätt ut, för alla i från 0 till antalet inlägg i minblogg

string[] storage = minBlogg[i];

den här raden gör en lista med strängar av minblogg[i]

Nu gissar jag efter jag inte ser hela programmet, är inte minblogg[i] en sträng i sig?
Rimligtvis kan du hoppa denna raden och:
if (userInput == storage[i]) den här raden borde jämföra userinput med minblogg[i] gissar jag? alltså:

if (userInput == minBlogg[i])

Därefter tror jag att ditt program kommer fungera, det jag skriver baserar sig på gissningar kring hur resten av programmet ser ut så ta det med en nypa salt.

Permalänk

Här är hela coden, kanske blir lättare hatt hitta vart jag gjort fel någonstans

using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Blogg { internal class Program { static void Main(string[] args) { List<string[]> minBlogg = new List<string[]>(); bool running = true; Console.WriteLine("\n\tVälkommen!\n"); while (running) { String[] inlägg = new String[3]; Console.WriteLine("\tVälj mellan 1-4:"); Console.WriteLine("\t[1] Vissa alla inlägg"); Console.WriteLine("\t[2] Skriv ett nytt inlägg"); Console.WriteLine("\t[3] Sök bland inläggen"); Console.WriteLine("\t[4] Avsluta Bloggen"); int mainMenu = 0; try { mainMenu = Convert.ToInt32(Console.ReadLine()); } catch { Console.WriteLine("\n\tEndast siffror!\n"); } if (mainMenu > 4) { Console.WriteLine("¨\n\t Endast mellan 1-4!\n"); } switch (mainMenu) { case 1: Console.WriteLine("\tAlla inlägg: "); Console.WriteLine("\t------------------"); foreach (string[] skrivnaInlägg in minBlogg) Console.WriteLine("\tTitel: "+ skrivnaInlägg[0] +"\n\tInlägg: "+ skrivnaInlägg[1] +" \n\tPublicerat: "+ skrivnaInlägg[2]); Console.ReadLine(); Console.Clear(); break; case 2: Console.Write("\tSkriv din titel: "); inlägg[0] = Console.ReadLine(); Console.Write("\tSkriv ditt inlägg: "); inlägg[1] = Console.ReadLine(); inlägg[2] = DateTime.Now.ToString(); minBlogg.Add(inlägg); Console.WriteLine("\tDitt inlägg är nu sparat"); Console.ReadLine(); Console.Clear(); break; case 3: Console.WriteLine("\t Sök efter titeln: "); string userInput = Console.ReadLine(); for (int i = 0; i < minBlogg.Count; i++) { string[] storage = minBlogg[i]; if (userInput == storage[i]) { Console.WriteLine("\t Här är inlägget: \n\t Titel: " + (storage[0] + "\n\t Inlägg: " + storage[1] + "\n\t Publicerat: " + storage[2] + "\n\t"); } else { Console.WriteLine("\t " + i + "Hittas inte, försök igen!"); } } Console.ReadLine(); Console.Clear(); break; case 4: Console.Clear(); Console.WriteLine("\n\tVälkommen åter!"); Thread.Sleep(2000); running = false; break; } } } } }

Permalänk
Medlem
Skrivet av NågontingpåL:

Här är hela coden, kanske blir lättare hatt hitta vart jag gjort fel någonstans

using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Blogg { internal class Program { static void Main(string[] args) { List<string[]> minBlogg = new List<string[]>(); bool running = true; Console.WriteLine("\n\tVälkommen!\n"); while (running) { String[] inlägg = new String[3]; Console.WriteLine("\tVälj mellan 1-4:"); Console.WriteLine("\t[1] Vissa alla inlägg"); Console.WriteLine("\t[2] Skriv ett nytt inlägg"); Console.WriteLine("\t[3] Sök bland inläggen"); Console.WriteLine("\t[4] Avsluta Bloggen"); int mainMenu = 0; try { mainMenu = Convert.ToInt32(Console.ReadLine()); } catch { Console.WriteLine("\n\tEndast siffror!\n"); } if (mainMenu > 4) { Console.WriteLine("¨\n\t Endast mellan 1-4!\n"); } switch (mainMenu) { case 1: Console.WriteLine("\tAlla inlägg: "); Console.WriteLine("\t------------------"); foreach (string[] skrivnaInlägg in minBlogg) Console.WriteLine("\tTitel: "+ skrivnaInlägg[0] +"\n\tInlägg: "+ skrivnaInlägg[1] +" \n\tPublicerat: "+ skrivnaInlägg[2]); Console.ReadLine(); Console.Clear(); break; case 2: Console.Write("\tSkriv din titel: "); inlägg[0] = Console.ReadLine(); Console.Write("\tSkriv ditt inlägg: "); inlägg[1] = Console.ReadLine(); inlägg[2] = DateTime.Now.ToString(); minBlogg.Add(inlägg); Console.WriteLine("\tDitt inlägg är nu sparat"); Console.ReadLine(); Console.Clear(); break; case 3: Console.WriteLine("\t Sök efter titeln: "); string userInput = Console.ReadLine(); for (int i = 0; i < minBlogg.Count; i++) { string[] storage = minBlogg[i]; if (userInput == storage[i]) { Console.WriteLine("\t Här är inlägget: \n\t Titel: " + (storage[0] + "\n\t Inlägg: " + storage[1] + "\n\t Publicerat: " + storage[2] + "\n\t"); } else { Console.WriteLine("\t " + i + "Hittas inte, försök igen!"); } } Console.ReadLine(); Console.Clear(); break; case 4: Console.Clear(); Console.WriteLine("\n\tVälkommen åter!"); Thread.Sleep(2000); running = false; break; } } } } }

for (int i = 0; i < minBlogg.Count; i++) { string[] storage = minBlogg[i]; if (userInput == storage[i]) { Console.WriteLine("\t Här är inlägget: \n\t Titel: " + (storage[0] + "\n\t Inlägg: " + storage[1] + "\n\t Publicerat: " + storage[2] + "\n\t"); } else { Console.WriteLine("\t " + i + "Hittas inte, försök igen!"); } }

Vilken del av inlägget (storage) jämför den med när den kollar på inlägg i > 0?

Visa signatur

| MSI B650 Tomahawk | Ryzen 7 9800X3D | ASUS RTX 3070 | 64GB DDR5 6000MHz | MSI MPG A1000G | Samsung 970 Evo M.2 1TB + 2x WD Black SN850X 2TB|

Permalänk
Skrivet av Jaevel:

Om vi bryter ner din for-loop:

for (int i = 0; i < minBlogg.Count; i++)

ser rätt ut, för alla i från 0 till antalet inlägg i minblogg

string[] storage = minBlogg[i];

den här raden gör en lista med strängar av minblogg[i]

Nu gissar jag efter jag inte ser hela programmet, är inte minblogg[i] en sträng i sig?
Rimligtvis kan du hoppa denna raden och:
if (userInput == storage[i]) den här raden borde jämföra userinput med minblogg[i] gissar jag? alltså:

if (userInput == minBlogg[i])

Därefter tror jag att ditt program kommer fungera, det jag skriver baserar sig på gissningar kring hur resten av programmet ser ut så ta det med en nypa salt.

Nej, av någon anledning funkar inte det.

Permalänk
Skrivet av BrutalSwede:

for (int i = 0; i < minBlogg.Count; i++) { string[] storage = minBlogg[i]; if (userInput == storage[i]) { Console.WriteLine("\t Här är inlägget: \n\t Titel: " + (storage[0] + "\n\t Inlägg: " + storage[1] + "\n\t Publicerat: " + storage[2] + "\n\t"); } else { Console.WriteLine("\t " + i + "Hittas inte, försök igen!"); } }

Vilken del av inlägget (storage) jämför den med när den kollar på inlägg i > 0?

vilket i ska vara > 0?

Permalänk
Medlem

Jag ser nu att jag gissade fel.
Du lagrar alltså titel för inlägg i storage[0] och inlägget i storage[1]

Men, tänk om du har 2 inlägg, då gör din for-loop följande:
första loopen:
string[] storage = minblogg[0]

if(userInput == storage[0])
här jämför den userinput mot titel, rimligt

andra loopen:

string[] storage = minblogg[1]

if (userInput == storage[1])
Här jämför vi userinput mot hela blogginlägget, kanske inte lika rimligt?

Nu hoppas jag du förstår var du gör fel
Annars förtydligar jag ännu mer

Permalänk
Skrivet av Jaevel:

Jag ser nu att jag gissade fel.
Du lagrar alltså titel för inlägg i storage[0] och inlägget i storage[1]

Men, tänk om du har 2 inlägg, då gör din for-loop följande:
första loopen:
string[] storage = minblogg[0]

if(userInput == storage[0])
här jämför den userinput mot titel, rimligt

andra loopen:

string[] storage = minblogg[1]

if (userInput == storage[1])
Här jämför vi userinput mot hela blogginlägget, kanske inte lika rimligt?

Nu hoppas jag du förstår var du gör fel
Annars förtydligar jag ännu mer

Okej, ja jag fattar vad som är struligt nu.
Men vet inte hur jag fixar det?

Permalänk
Medlem
Skrivet av NågontingpåL:

Okej, ja jag fattar vad som är struligt nu.
Men vet inte hur jag fixar det?

jämför alltid med storage 0 eftersom det är där du har titeln

Permalänk
Skrivet av Jaevel:

jämför alltid med storage 0 eftersom det är där du har titeln

Yes!, Tack så jätte mycket nu funkar det enteligen!!