-1

不确定是否在正确的轨道上,但我想找到一个数组的索引 id 并检查它是否等于另一个 id 然后显示一条消息。由于某种原因它不起作用。

int  _findID = 1;       
using (StreamReader reader = new StreamReader("textfile.txt"))
    {
    string line = reader.ReadLine();
    while (line != null)
    {
        string[] array = {line};
        for (int i = 0; i < array.Length; i++)
        {
            if (array[i] == findID)
            {
                MesssageBox.show("Line found!!")
            }
        }
    }
}

任何帮助表示赞赏

4

3 回答 3

1

尝试

if(int.Parse(array[i]) == findID)

代替

if (array[i] == findID)

您必须将您string的数字表示转换为 a int,然后比较两者int

这甚至比迭代总是有 1 个元素的数组还要短:

while (line != null) {
    if(int.Parse(array[i]) == findID)
        MesssageBox.Show("Line found!!")
}

编辑

尝试

int  _findID = 1;
List<String> names = new List<string>()
using (StreamReader reader = new StreamReader("textfile.txt"))
{
    string line = reader.ReadLine();
    int lineCount = 0;
    while (line != null)
    {
        lineCount++;
        names.Add(line);
        if (lineCount == _findID)
            MessageBox.Show("Line found!!");           
    }
}
于 2012-04-30T10:52:54.420 回答
0

@ user1285872:array.Length 在您检查 if (array[i] == findID) 时,如果 findID ==0 的值将显示 (0==findID),则数组长度将为 1,然后将显示消息。

于 2012-04-30T10:56:40.243 回答
0

您的代码存在各种问题:

首先,如果文件不为空,则当您读取该行一次并始终检查同一行时,您将陷入无限循环:

string line = reader.ReadLine();
while (line != null) {}

只要您在循环本身中创建该数组,它就始终是 1 项。

但是对于lineID的问题,这样一行的内容究竟是什么?

于 2012-04-30T11:00:13.063 回答