2016-03-21 10 views
0

したがって、Values.txtファイルから値(数値)を読み取り、それらを整数の配列に格納するプログラムを作成する必要があります。私は配列の長さを知っていないので、ファイルの値の)。 最初にファイルをループし、counter変数を使用して配列に格納する値の数を取得します。それから、問題が発生します。ファイルの先頭から値をキャッチして配列に格納する方法を知りません。 私はそれを実行すると、結果として0 0 0 0 0が得られます。代わりにStreamReaderを再起動してファイルの先頭から読み込む方法

myReader.DiscardBufferedData(); 
myReader.BaseStream.Seek(0, SeekOrigin.Begin); 
myReader.BaseStream.Position = 0; 

の私はmyReader.Close()、その後myReader = new StreamReader("Values.txt)使用する場合

、結果は誰かがこれが起こっている理由を説明してくださいすることができ、正確であると私は、このコード:)

 string lineOfText = ""; 
     int counter = 0; 
     int[] intArray; 
     StreamReader myReader = new StreamReader("Values.txt"); 


     while(lineOfText != null) 
     { 
      lineOfText = myReader.ReadLine(); 
      if(lineOfText != null) 
      { 
       counter++; 
      } 
     } 
     intArray = new int[counter]; 

     myReader.DiscardBufferedData(); 
     myReader.BaseStream.Seek(0, SeekOrigin.Begin); 
     myReader.BaseStream.Position = 0; 

     counter = 0; 
     while(lineOfText != null) 
     { 
      lineOfText = myReader.ReadLine(); 
      if (lineOfText != null) 
      { 
       intArray[counter] = int.Parse(lineOfText); 
      } 
      counter++; 
     } 
     myReader.Close(); 

     for (int j = 0; j < intArray.Length; j++) 
     { 
      Console.WriteLine(intArray[j]); 
     } 
+1

_ifあなたはこの単純に呼び出すことで、かなり簡略化することができ、can_(https://msdn.microsoft.com/en-us/library [ 'File.ReadAllLinesを()'。] /s2tte0y1(v=vs.110).aspx) – CodingGorilla

答えて

1

を修正howcanここでは、ストリームを1回のパスで実行する場合にストリームをリセットする方法を説明しますReturn StreamReader to Beginning

アレイを使用する必要がありますか?リストはあなたのやり方にぴったりなので、後でそのリストを配列にプッシュしたり、リストから直接作業したりすることができます。以下のコード例:

List<string> ints = new List<string>(); 
using (StreamReader sr = new StreamReader("example.txt")) 
{ 
    ints.Add(sr.ReadLine()); 
} 
+0

私は配列を使用する必要があります:/ – Tandy

関連する問題