2016-10-05 5 views
2

私はC#read(){}関数に問題があります。私が開いて、私の文書を読んだときには、最初の行読んでいません:最初の行を読み上げませんC#

private static void read(string file, Konteineris butas) 
    { 
     using (StreamReader reader = new StreamReader(@file)) 
     { 
      string line; 
      line = reader.ReadLine(); 
      while (null != (line = reader.ReadLine())) 
      { 
       string[] values = line.Split(';'); 
       int nr = Convert.ToInt16(values[0]); 
       double plotas = Convert.ToDouble(values[1]); 
       int kambariusk = Convert.ToInt16(values[2]); 
       int kaina = Convert.ToInt32(values[3]); 
       string tnr = values[4]; 
       Apartaments apart = new Butas(nr,plotas,kambariusk,kaina,tnr); // array of apartaments 

       apartaments.addapartament(apart); 

      } 
     } 
    } 

をテキストファイル:

1;25,4;1;25000;867467212 // skips this line... 
2;26,4;2;100000;867467212 
3;75,4;3;2100;867467212 
4;65,4;4;15000;867467212 

答えて

2

あなたがReadLineメソッド()あなたのループので、あなたを呼び出しているline = reader.ReadLine();への最初の呼び出しを削除しますそれを必要としません。

+0

がそれをダムだ..あなたに感謝: – Julius

1

あなたは行= reader.ReadLine()を行うため、その後whileループの同じコードでそれをフォローします。ループの最初の繰り返しになるまでには既に.ReadLine()が2回実行されています。したがって、ファイルの2行目にあります。

行= reader.ReadLine()を削除します。コードから再試行してください。

0
private static void read(string file, Konteineris butas) 
{ 
    using (StreamReader reader = new StreamReader(@file)) 
    { 
     string line; 

ライン= reader.ReadLine()。

 while (null != (line = reader.ReadLine())) 
     { 
      string[] values = line.Split(';'); 
      int nr = Convert.ToInt16(values[0]); 
      double plotas = Convert.ToDouble(values[1]); 
      int kambariusk = Convert.ToInt16(values[2]); 
      int kaina = Convert.ToInt32(values[3]); 
      string tnr = values[4]; 
      Apartaments apart = new Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments 

      apartaments.addapartament(apart); 

     } 
    } 
} 

これを削除します。あなたのwhile条件がこれを既に実行しているので、この呼び出しに基づいて最初の行にジャンプします。 line = reader.ReadLine();あなたがそれを呼び出すたびにあなたに新しい行を与えます。 あなたのwhile状態では、あなたの最初の行を使わずに2行目を取得します。

ウェイ1:

private static void read(string file, Konteineris butas) 
{ 
    using (StreamReader reader = new StreamReader(@file)) 
    { 
     string line; 
     while (null != (line = reader.ReadLine())) 
     { 
      string[] values = line.Split(';'); 
      int nr = Convert.ToInt16(values[0]); 
      double plotas = Convert.ToDouble(values[1]); 
      int kambariusk = Convert.ToInt16(values[2]); 
      int kaina = Convert.ToInt32(values[3]); 
      string tnr = values[4]; 
      Apartaments apart = new Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments 

      apartaments.addapartament(apart); 

     } 
    } 
} 

ウェイ2:

private static void read(string file, Konteineris butas) 
{ 
    using (StreamReader reader = new StreamReader(@file)) 
    { 
     string line; 

     while (line!=null) 
     { 
      line = reader.ReadLine(); 
      string[] values = line.Split(';'); 
      int nr = Convert.ToInt16(values[0]); 
      double plotas = Convert.ToDouble(values[1]); 
      int kambariusk = Convert.ToInt16(values[2]); 
      int kaina = Convert.ToInt32(values[3]); 
      string tnr = values[4]; 
      Apartaments apart = new Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments 

      apartaments.addapartament(apart); 

     } 
    } 
} 
+0

あなたのウェイ2は、ええ、私はそれをfixxedラインに – Theraot

+0

woopsを読むために継続しないD;) –

関連する問題