7 svar
44 visningar
VasaE 6
Postad: 12 nov 2020

Loggbok

Hej! 

 

Jag behöver hjälp med min loggbok, jag förstår inte riktigt varför logg under sökfunktionen blir rödmarkerad. Kan någon snälla hjälpa mig och se över min loggbok vad jag kan göra bättre samt om det är några missar jag har gjort på vägen. 

 

using System;
using System.Collections.Generic;

namespace Loggboken
{
class Program
{
static void Main(string[] args)
{


List<String[]> loggbok = new List<String[]>(); // Skapar vår lista som ska innehålla våra arrays

String[] Logg = new String[3]; //initiering av array som ska inehålla 3 element
Logg[0] = "Titel";//initiering av 1a elementet, titel
Logg[1] = "inlägg"; //initiering av 2a elementet, inlägg
Logg[2] = DateTime.Now.ToString(); //initiering av tredje elementet, Dagens datum och tid
bool isRunning = true;//// Variabel för att kontrollera om programmet ska fortsätta köras
//Metod som presenterar menyn!

while (isRunning)
{
DateTime tiden = DateTime.Now; // DateTime-metoden som skriver ut datum och tid
Console.WriteLine(tiden); //Utskrivning av tiden
Console.WriteLine("\n\tVälkommen till din Loggbok!\n\t ");

Console.WriteLine("\n\t[1] Skriv nytt inlägg i loggboken:");

Console.WriteLine("\n\t[2] Visa sparade loggar");

Console.WriteLine("\n\t[3] Sök inlägg");

Console.WriteLine("\n\t[4] Avsluta programmet\n\t");

Console.Write("\n\tVänligen gör ditt val:\t");
int menyVal = Convert.ToInt32(Console.ReadLine());
int nr;
while (!int.TryParse(Console.ReadLine(), out nr) || nr < 1 || nr > 4) //Läser valet/siffran som användaren har gjort. Läser in om användaren har valt siffrona 1 till 4.
{
Console.Write("Försök igen, välj mellan 1-4: "); //uppmanar användaren att välja 1-4
}

switch (menyVal)
{



case 1:
string[] logg = new string[3]; //Skapa en ny array för varje inlägg.

for (int i = 0; i < logg.Length; i++)
{

Console.Write("\tAnge vad vill du kalla ditt inlägg: "); //sparar titeln i index 0 i vektorn "logg"
logg[0] = Console.ReadLine();

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


//sparar tiden i index 2
logg[2] = DateTime.Now.ToString(); //initiering av tredje elementet, Dagens datum och tid

loggbok.Add(logg);//sparar inlägget i loggboken
Console.WriteLine("Ditt inlägg är nu sparat!");//och skriver ut att det är gjort
}
break;

case 2:
Console.WriteLine("\n Nedan är dina skrivna inlägg:\n");
Console.WriteLine("\n\t-------------------\n\t"); // Gör det trevligare för användaren att läsa
foreach (string[] inlägg in loggbok)
{

Console.WriteLine("\n Inlägget är skrivet: " + inlägg[2] + " \n Titel - " + inlägg[0] + " \n Inlägg - " + inlägg[1] + "\n"); //Ut skrift av användarens inlägg

}

break;
case 3:

Console.WriteLine("Skriv in ett ord för att söka bland dina inlägg");
string ord = Console.ReadLine();
for (int j = 0; j < loggbok.Count; j++)

{


if (logg[j] == "ord") //logg blir rödmarkerat. Varför? 

{
Console.WriteLine("Inlägget hittades!" + logg[j] + "\n");
}
else
{

Console.WriteLine("Inlägget hittades inte");
}


}

break;


case 4:
isRunning = false;
break;
}
}

Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
}
}

Laguna 11780
Postad: 12 nov 2020

logg som deklareras under case 1 syns nog inte i case 3. Prova att lägga deklarationen före case. 

VasaE 6
Postad: 12 nov 2020

Trots att jag byter deklaration på dem så blir det rödmarkerat. Se det som är i fetstil. 

 

using System;
using System.Collections.Generic;

namespace Loggboken
{
class Program
{
static void Main(string[] args)
{


List<string[]> loggbok = new List<string[]>(); // Skapar vår lista som ska innehålla våra arrays

string[] Logg = new string[3]; //initiering av array som ska inehålla 3 element
Logg[0] = "Titel";//initiering av 1a elementet, titel
Logg[1] = "inlägg"; //initiering av 2a elementet, inlägg
Logg[2] = DateTime.Now.ToString(); //initiering av tredje elementet, Dagens datum och tid
bool isRunning = true;//// Variabel för att kontrollera om programmet ska fortsätta köras
//Metod som presenterar menyn!

while (isRunning)
{
DateTime tiden = DateTime.Now; // DateTime-metoden som skriver ut datum och tid
Console.WriteLine(tiden); //Utskrivning av tiden
Console.WriteLine("\n\tVälkommen till din Loggbok!\n\t ");

Console.WriteLine("\n\t[1] Skriv nytt inlägg i loggboken:");

Console.WriteLine("\n\t[2] Visa sparade loggar");

Console.WriteLine("\n\t[3] Sök inlägg");

Console.WriteLine("\n\t[4] Avsluta programmet\n\t");

Console.Write("\n\tVänligen gör ditt val:\t");
int menyVal = Convert.ToInt32(Console.ReadLine());
int nr;
while (!int.TryParse(Console.ReadLine(), out nr) || nr < 1 || nr > 4) //Läser valet/siffran som användaren har gjort. Läser in om användaren har valt siffrona 1 till 4.
{
Console.Write("Försök igen, välj mellan 1-4: "); //uppmanar användaren att välja 1-4
}

switch (menyVal)
{



case 1:
String[] logg = new String[3]; //Skapa en ny array för varje inlägg.

for (int i = 0; i < logg.Length; i++)
{

Console.Write("\tAnge vad vill du kalla ditt inlägg: "); //sparar titeln i index 0 i vektorn "logg"
logg[0] = Console.ReadLine();

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


//sparar tiden i index 2
logg[2] = DateTime.Now.ToString(); //initiering av tredje elementet, Dagens datum och tid

loggbok.Add(logg);//sparar inlägget i loggboken
Console.WriteLine("Ditt inlägg är nu sparat!");//och skriver ut att det är gjortlogBook.Add(entry[0]);


}
break;

case 2:
Console.WriteLine("\n Nedan är dina skrivna inlägg:\n");
Console.WriteLine("\n\t-------------------\n\t"); // Gör det trevligare för användaren att läsa

foreach (string[] inlägg in loggbok)
{

Console.WriteLine("\n Inlägget är skrivet: " + inlägg[2] + " \n Titel - " + inlägg[0] + " \n Inlägg - " + inlägg[1] + "\n"); //Utskrift av användarens inlägg

}

break;
case 3:

Console.WriteLine("Skriv in ett ord för att söka bland dina inlägg");
string keyword = Console.ReadLine();

for (int i = 0; i < logg.Count; i++) //Detta blir nu rödmarkerat. 
{

if (logg[i] == keyword)
{

Console.WriteLine("Inlägget hittades!" + logg[i] + "\n");

}

else
{

Console.WriteLine("Inlägget hittades inte");
}


}

break;


case 4:
isRunning = false;
break;
}
}

Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
}
}

Laguna 11780
Postad: 13 nov 2020

Jag ser ingen skillnad i deklarationen. logg deklareras fortfarande bara under case 1.

VasaE 6
Postad: 13 nov 2020

Du menar alltså att koden bör se ut såhär? Hittar ingen lösning någonstans. Varken i kurslitteraturen eller på nätet. Uppskattar din hjälp!

 

using System;
using System.Collections.Generic;

namespace Loggboken
{
class Program
{
static void Main(string[] args)
{


List<string[]> loggbok = new List<string[]>(); // Skapar vår lista som ska innehålla våra arrays

string[] Logg = new string[3]; //initiering av array som ska inehålla 3 element
Logg[0] = "Titel";//initiering av 1a elementet, titel
Logg[1] = "inlägg"; //initiering av 2a elementet, inlägg
Logg[2] = DateTime.Now.ToString(); //initiering av tredje elementet, Dagens datum och tid
bool isRunning = true;//// Variabel för att kontrollera om programmet ska fortsätta köras
//Metod som presenterar menyn!

while (isRunning)
{
DateTime tiden = DateTime.Now; // DateTime-metoden som skriver ut datum och tid
Console.WriteLine(tiden); //Utskrivning av tiden
Console.WriteLine("\n\tVälkommen till din Loggbok!\n\t ");

Console.WriteLine("\n\t[1] Skriv nytt inlägg i loggboken:");

Console.WriteLine("\n\t[2] Visa sparade loggar");

Console.WriteLine("\n\t[3] Sök inlägg");

Console.WriteLine("\n\t[4] Avsluta programmet\n\t");

Console.Write("\n\tVänligen gör ditt val:\t");
int menyVal = Convert.ToInt32(Console.ReadLine());
int nr;
while (!int.TryParse(Console.ReadLine(), out nr) || nr < 1 || nr > 4) //Läser valet/siffran som användaren har gjort. Läser in om användaren har valt siffrona 1 till 4.
{
Console.Write("Försök igen, välj mellan 1-4: "); //uppmanar användaren att välja 1-4
}
try
switch (menyVal)
{



case 1:
String[] logg = new String[3]; //Skapa en ny array för varje inlägg.


{

Console.Write("\tAnge vad vill du kalla ditt inlägg: "); //sparar titeln i index 0 i vektorn "logg"
logg[0] = Console.ReadLine();

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


//sparar tiden i index 2
logg[2] = DateTime.Now.ToString(); //initiering av tredje elementet, Dagens datum och tid

loggbok.Add(logg);//sparar inlägget i loggboken
Console.WriteLine("Ditt inlägg är nu sparat!");//och skriver ut att det är gjortlogBook.Add(entry[0]);


}
break;

case 2:
Console.WriteLine("\n Nedan är dina skrivna inlägg:\n"); //Utskrift av arrayens innehåll.
Console.WriteLine("\n\t-------------------\n\t"); // Gör det trevligare för användaren att läsa

foreach (string[] inlägg in loggbok)
{

Console.WriteLine("\n Inlägget är skrivet: " + inlägg[2] + " \n Titel - " + inlägg[0] + " \n Inlägg - " + inlägg[1] + "\n"); //Utskrift av arrayens innehåll.

}

break;
case 3:

Console.Write("Skriv in ett ord för att söka bland dina inlägg");
string keyword = Console.ReadLine();

string[] logg = new string[3]; //dekelartion av arryaen. Behövs den ens här?

for (int i = 0; i < logg.Length; i++) //For-loop för att söka igenom innehållet efter användarens innehåll.
{

 

if (logg[i] == keyword)
{

Console.WriteLine("Inlägget hittades!" + logg[i] + "\n");

}

else
{

Console.WriteLine("Inlägget hittades inte");
}


}

break;


case 4:
isRunning = false;
break;
}

 

}


Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
}
}

Laguna 11780
Postad: 13 nov 2020

Tja, jag har inte försökt förstå koden, så det är inte säkert att det fungerar, men försvann det röda? Går det att köra?

VasaE 6
Postad: 13 nov 2020

Hej, nej det gjorde inte det.. 

Laguna 11780
Postad: 13 nov 2020

Om du låter muspekaren vila över det röda, visar det sig nån text då som säger vad som är fel?

Svara Avbryt
Close