我是编码和C#的新手,我需要帮助我正在创建的程序。 这是一项学校作业,我无法让它发挥作用。
程序很简单,我有一本日志(List),我应该能够创建新日志(每个日志必须是一个单独的数组)并将其保存到List。我得到了那部分,但后来我应该能够搜索特定的日志(只需搜索日志的确切标题,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是搜索功能。如果我添加多个数组,只能找到最后一个数组,但输出显示&#34; System.String []&#34;对于添加的每个数组(如果我添加2个数组,则显示消息2次)
和案例3是打印全部功能。它打印出所有数组,但输出也只是&#34; System.String []&#34;对于每个阵列。
谢谢。
答案 0 :(得分:0)
您需要使用这样的嵌套循环。
__sync_add_and_fetch
为更多的景观做同样的事情。我是为foreach (var item in loggBok)
{
foreach (var s in item)
Console.WriteLine(s);
}
break;
做的。希望它有所帮助。
答案 1 :(得分:0)
这里的问题是你没有深入钻研结构。想象一下就好;
-List
-Array(of type string)
-string
-string
-string
因此,在foreach
循环中,您要求它返回实际的数组对象,这就是您获得此结果的原因。
只需更深一级,然后根据需要格式化输出;
foreach (var item in loggBok)
{
Console.WriteLine(string.Format("{0},{1},{2}", item[0], item[1], item[2]);
}
答案 2 :(得分:0)
你可能会认为这完全成熟了一段代码
案例2:
List<string[]> loggBok = new List<string[]>();
string searchTerm = Console.ReadLine();
bool foundItem = false;
int index = 0;
do
{
string[] log = loggBok[index];
if(log[0] == searchTerm)
{
foundItem = true;
Console.WriteLine("Found it.");
}
} while(foundItem == false && index > loggBok.Count);
查看do{}while();
的使用情况,你必须至少循环一次,但直到你找到该项目或直到你整个集合为止。
for case3:
for (int i = 0; i < loggBok.Count; i++)
{
string firstEntry = loggBok[i][0];
string secondEntry = loggBok[i][1];
string thirdEntry = loggBok[i][2];
Console.WriteLine(firstEntry + " , " + secondEntry + " , " + thirdEntry);
}
这里我们使用for循环,因为我们确切地知道我们必须通过你的日志循环多少次。