分配变量后的线性搜索
Posted
技术标签:
【中文标题】分配变量后的线性搜索【英文标题】:Linear search after assigning variables [closed] 【发布时间】:2017-04-20 16:29:37 【问题描述】:我一直在制作一个一直有效的程序。但现在我想将程序的搜索功能更改为更简单的东西。这就是我所做的:错误消息是使用未分配的局部变量 log。需要明确的是,这就是我希望搜索功能的外观。现在我只需要弄清楚变量的事情。
完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Loggbok
class MainClass
public static void Main(string[] args)
DateTime tiden = DateTime.UtcNow; //Skriver ut tiden vid varje inlägg
bool running = true; //Ger ett booleskt värde till variabeln running för att kunna skapa en loop
List<string[]> loggbok = new List<string[]>(); //Här skapas listan som innehåller arrayen
while (running) //Här skapas loopen
Console.WriteLine("\n************************************");
Console.WriteLine("\nVälkommen till loggboken!");
Console.WriteLine("\n************************************");
Console.WriteLine("\n[1] Skriv nytt inlägg i loggboken");
Console.WriteLine("[2] Skriv ut alla loggar");
Console.WriteLine("[3] Sök inlägg i loggboken");
Console.WriteLine("[4] Radera innehåll i loggboken");
Console.WriteLine("[5] Avsluta loggboken");
Console.WriteLine("\n************************************");
Console.Write("\nVälj: ");
int option; //Int eftersom valet ska vara ett heltal
try
option = Int32.Parse(Console.ReadLine()); //testar så att inmatningen är av typen Int
catch
Console.WriteLine("Fel, du får bara skriva in nummer"); //Felmeddelande om inmatningen är en bokstav
continue;
switch (option)
case 1:
string[] logg = new string[2]; //Här deklareras arrayen
Console.WriteLine("\n************************************");
Console.WriteLine(tiden);
Console.WriteLine("Ange en Titel:");
logg[0] = Console.ReadLine(); //Här sparas titeln
Console.Clear();
Console.WriteLine("\n************************************");
Console.WriteLine("Skriv inlägg:");
logg[1] = String.Format("012", Console.ReadLine(), Environment.NewLine,
DateTime.Now.ToString(
"yyyy-MM-dd HH:mm:ss")); //Här sparas inlägget samt datum och tid, detta är möjligt tack vare formattering
loggbok.Add(logg);
break;
case 2:
foreach (string[] item in loggbok) //För att skriva ut alla items i loggboken
Console.WriteLine("\n--------------------------------------\n ");
Console.WriteLine(item[0]); //För att skriva ut titel
Console.WriteLine(item[1]); //För att skriva ut inlägg
Console.WriteLine("\n--------------------------------------\n ");
Console.ReadLine();
break;
case 3:
Console.WriteLine("\n************************************");
Console.WriteLine("Skriv in ett ord du vill söka efter i loggboken:");
string nyckelord = Console.ReadLine(); //Här sparas inmatningen av nyckelordet
for (int i = 0; i < logg.Length; i++)
if (logg[i] == nyckelord)
Console.WriteLine(logg[0]);
Console.WriteLine(logg[1]);
else
Console.WriteLine("Finns ej");
break;
case 4:
Console.WriteLine("\n************************************");
Console.WriteLine("Skriv titeln på det inlägg du vill ta bort:");
string title = Console.ReadLine(); //Sparar titeln på inlägget användaren vill radera
for (int x = 0; x < loggbok.Count; x++) //Loopa igenom varje titel
if (String.Equals(loggbok[x][0], title, StringComparison.OrdinalIgnoreCase)
) //Icke skiftlägeskänslig matchning av titeln.
loggbok.RemoveAt(x); //Matchning funnen.
else
Console.WriteLine("Titeln finns inte, återgår till huvudmenyn");
break; //Avsluta loopen.
case 5:
running = false; //Avslutar loopen och därmed programmet
break;
default:
Console.WriteLine(
"Nu blev det fel, välj mellan [1] [2] [3] [4] [5]"); //Felmeddelande om valet är någon annan siffra än de som menyn innehåller
break;
【问题讨论】:
你在哪里声明 logg ? 它是在案例 1 中声明的,因为我也需要它 使其成为包含方法的全局变量。 【参考方案1】:这就是我所做的:错误消息是使用未分配的 局部变量日志
必须在控制离开包含方法之前分配所有局部变量。
在case 1中声明
从case 1
中删除string[] logg = new string[2];
并将其插入到打开的try
块之前,否则您将无法在其他情况下使用该数组。
string[] logg = new string[2];//Här deklareras arrayen
try
option = Int32.Parse(Console.ReadLine());//testar så att inmatningen är av typen Int
...
...
...
【讨论】:
好的,我该怎么做?我对这一切有点陌生:) 显示完整的代码,然后我会适当地编辑我的答案。 @Ok 我已经粘贴了整个代码。我希望该程序具有与以前相同的功能,该程序可以保存尽可能多的日志,然后搜索它们,将它们打印出来等 :) @mackanmorre 查看编辑。 嘿,这适用于编译错误。但是搜索功能现在不起作用。无论我搜索什么,我都只会收到错误消息【参考方案2】:您的问题不清楚,应该改进。 假设代码完全按原样给出,那么您在循环或开关块之外使用 break。 更正并检查是否仍有问题。
【讨论】:
以上是关于分配变量后的线性搜索的主要内容,如果未能解决你的问题,请参考以下文章