1

Windows Phone 7 でテキスト ファイルを解析して読み取ろうとしています。テキスト ファイルの形式は次のとおりです (実際には 44 のエントリがあります)。

Millbrae,37.600322,-122.386735
SFO,37.61636,-122.391027
San Bruno,37.638262,-122.416513
South SF,37.664264,-122.444043

そして、ここに私のコードがあります:

var foo=Application.GetResourceStream(new Uri("stations.txt", UriKind.Relative));
        StreamReader streamReader = new StreamReader(foo.Stream);
        string x;
        int k;

            while ((x = streamReader.ReadLine()) != null)
            {
                string[] items = x.Split(',');
                   for (k = 0; k < 43; k++)
                 {

                     cities[k] = (items[0]);

                 }//for*/
            }//while

            for (k = 0; k < 43; k++)
            {
                MessageBox.Show(cities[k]);
            }

最後の最後のメッセージ ボックスは、デバッグ用です。すべての都市が、citys という文字列配列に読み込まれていることを確認しようとしていました。ただし、citys 配列を出力すると、44 エントリすべてについて、テキスト ファイルの最後の値しか得られません。

誰かが私が間違っていることを指摘できますか? すべての値について、最後の都市をどのように読み取ったのかわかりません。ありがとう!

4

1 に答える 1

1

配列都市の 44 エントリすべてで、同じ都市を 44 回設定します。
次に、次の行に対して同じパターンを繰り返し、最後の行で停止します。したがって、最後のエントリのみで配列を埋めます。

      k = 0;
      while ((x = streamReader.ReadLine()) != null) 
      { 
            string[] items = x.Split(','); 
            if( k <= 44)
            {
                 cities[k] = (items[0]); 
                 k++;
            }
        }//while 

都市の for ループを削除し、手動インクリメント var を保持することでうまくいきます。もちろん、都市配列がどこかで次のように宣言されていると想定しています

   string[] cities = new string[44]();

バインドされたインデックスからチェックアウトする if ステートメントを追加しました。

于 2012-06-18T22:46:41.983 に答える