0
我試圖從列表(matchedSymbols)中打印符號(trimmedLine)和值,但是它會打印每個符號的所有有效符號的所有值。我嘗試不使用foreach循環,但它然後輸出搜索到的最後一個符號的值,這是無效的。下面是我對目前的方法代碼:從c#的foreach打印一行#
public void searchSymbolTable()
{
string searchingForFile = "";
string[] searchFile;
Console.Write("Enter the name of the search file: ");
searchingForFile = @"../../" + Console.ReadLine();
Console.WriteLine("Searching symbol table...");
Console.WriteLine();
while (!File.Exists(searchingForFile))
{
Console.Write("File not found, try again or enter 1 to exit: ");
searchingForFile = @"../../" + Console.ReadLine();
if (searchingForFile == @"../../1")
{
Environment.Exit(1);
}
}
searchFile = File.ReadAllLines(searchingForFile);
matchedSymbols = new List<symbols>();
var space = ' ';
foreach (string line in searchFile)
{
try
{
var trimmedLine = line.Trim();
var tokens = trimmedLine.Split(space);
trimmedLine = checkSymbol(tokens[0]);
matchedSymbols.Add(mySymbols.ToList().Find(symName => symName.ToString() == trimmedLine));
if (matchedSymbols[matchedSymbols.Count() - 1] == null)
{
throw new Exception(string.Format("ERROR - Symbol {0} not found in symbol table.", trimmedLine));
}
else
{
foreach(symbols s in mySymbols)
{
Console.WriteLine(string.Format("{0,-10} {1}", trimmedLine, s.value));
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
if (Console.CursorTop % 20 == 19)
{
Console.Write("Press any key to continue ...");
Console.ReadKey();
}
}
}
}
我認爲你的內部foreach應該遍歷'matchedSymbols'而不是'mySymbols' - 是否正確?另外,你是否期待'trimmedLine'匹配'mySybols'中的多個符號? – bdimag 2014-09-24 14:37:33
將它更改爲matchedSymbols並不能解決問題,雖然我改變了它,因爲它應該被使用。它仍然打印出它看的最後一個值。打印每個符號和數值的時間似乎與其在列表中的位置相關(即,第一個符號被打印出一次,第二個符號被打印兩次)。至於trimmedLine,它會爲一個符號找到一個匹配,因爲我不允許重複。 – user3072102 2014-09-24 14:40:34
目前你的輸出到底是什麼,你期待的是什麼? – Crabgor 2014-09-24 14:44:35