-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数値の表現をに変換してから、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 これにより、(array[i] == findID) かどうかを確認すると、配列の長さが 1 になります。findID の値が ==0 の場合、メッセージが表示されます。

于 2012-04-30T10:56:40.243 に答える
0

あなたのコードにはさまざまな問題があります:

最初に、ファイルが空でない場合、行を一度読み取り、常に同じ行をチェックするため、無限ループが発生します。

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

配列は、ループ自体で作成する限り、常に 1 項目です。

しかし、lineID の問題については、そのような行の内容は正確には何ですか?

于 2012-04-30T11:00:13.063 に答える