私はコーディングとC#で非常に新しいので、作成しているプログラムで助けが必要です。 これは学校の割り当てであり、私はそれを動作させることができません。C#リストからの配列の出力
プログラムはシンプルで、ログブック(リスト)があり、新しいログを作成できるはずです(各ログは個別の配列でなければなりません)。私はその部分を解決しましたが、その後、特定のログを検索することができます(ログの正確なタイトル、00を検索するだけで)、リスト内のすべてのログ(配列)も印刷できるはずです(0,00,01,02,1,00,01,02など)
私はいくつかのことを試しましたが、うまく動作しません。私の特定の問題の解決策を見つけるのは難しいです。それを探しているだけです。
{
class Program
{
static void Main(string[] args)
{
//List & Array\\
List<string[]> loggBok = new List<string[]> { };
string[] newEntry = new string[3];
//Variabler\\ - Variabler för sökord och Tid&Datum
string searchTerm = "";
DateTime time = DateTime.Now;
Console.WriteLine("\tVälkommen till Charlies loggbok.");
//Bool & While loop\\
bool isRunning = true;
while (isRunning)
try
{
{ //Loop start
//Meny\\
Console.WriteLine("\n\t[1] Skriv ett nytt inlägg i loggboken");
Console.WriteLine("\t[2] Sök efter inlägg i loggboken");
Console.WriteLine("\t[3] Skriv ut alla loggar i loggboken");
Console.WriteLine("\t[4] Rensa bort all text");
Console.WriteLine("\t[5] Avsluta programmet");
Console.Write("\n\tVälj siffra: ");
//Switch\\
int menyVal = Convert.ToInt32(Console.ReadLine());
switch (menyVal)
{
case 1:
Console.WriteLine("\nDu har valt att skriva in ett nytt inlägg.");
//string[] newEntry = new string[3];
//Nytt inlägg\\
Console.Write("Skriv in titeln: ");
newEntry[0] = Console.ReadLine();
Console.Write("Skriv in meddelandet: ");
newEntry[1] = Console.ReadLine();
time = DateTime.Now;
var entryTime = Convert.ToString(time);
newEntry[2] = entryTime;
loggBok.Add(newEntry);
Console.WriteLine("\nInlägget är sparat i loggboken");
break;
case 2:
Console.WriteLine("\nVänligen skriv in titelt på inlägget för att söka fram det.");
Console.Write("\nSök efter: ");
searchTerm = Console.ReadLine();
var foundItem = false;
foreach (var item in loggBok)
{
if (item.Contains(searchTerm))
{
foundItem = true;
Console.WriteLine(item);
}
}
if (!foundItem)
{
Console.WriteLine("Kunde inte hitta inlägget du sökt efter.");
}
break;
case 3:
foreach (var item in loggBok)
{
Console.WriteLine(item);
}
break;
case 4:
Console.Clear();
Console.WriteLine("\tFönstret är nu rensat.");
break;
case 5:
Console.WriteLine("\n\tHej då!");
System.Threading.Thread.Sleep(2000);
isRunning = false; //bool är falskt och stänger då av programmet (avslutar loopen)
break;
default:
Console.Clear(); //Rensar konsolfönstret
Console.WriteLine("Felaktig inmatning, skriv en siffra från menyn");
break;
}
} //Loop slut
}
catch (Exception e)
{
Console.WriteLine("\nNågot gick fel!");
Console.WriteLine(e);
}
}
}
}
これまでのプログラム全体であり、ケース2と3が問題を抱えています。現在そのケースに入っているコードは機能しません。
ケース2は検索機能です。私は1つ以上の配列を追加する場合、最後のものだけを見つけることができますが、出力は "System.String []"(配列を2つ追加すると2回表示されます)
3はprint-all関数です。すべての配列を出力しますが、出力は各配列の "System.String []"だけです。
ありがとうございます。
ちょっとしたヒント。学習の段階で 'var'を使わないようにしましょう。あなたの変数のタイプについても考えていなくても、あなたを助けません。 – pijemcolu
私は通常、変数に適切な型を使用しますが、この場合はvarに変更する必要があります。私はvar、string、intよりも私の学習のほうがずっと進んでいないし、entryTime変数は文字列やintを型として受け入れないだろう。 – Kaliber123
'var entryTime = Convert.ToString(time);'文字列変数。悪いことは何もありません。私は、明示的な型の使用がはるかに適切であることを指摘しています。 – pijemcolu