2016-10-05 85 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

刪除第一個呼叫line = reader.ReadLine();要調用的ReadLine()你的循環,所以你在那裏不需要它。

+0

壩了吧..謝謝:d – Julius

1

因爲你做了一行= reader.ReadLine();然後在while循環中用相同的代碼進行跟蹤,直到循環第一次迭代時,它已經完成了一次.ReadLine()兩次,因此位於文件的第二行。

刪除line = 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); 

     } 
    } 
} 

刪除此。既然你的條件已經這樣做了,你將跳過基於這個調用的第一行。 line = reader.ReadLine();每當你打電話給你一個新的線。 所以在你的條件下,你不用第一條線即可獲得第二條線。

WAY1:

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); 

     } 
    } 
} 

way2:

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

您way2不繼續讀線 – Theraot

+0

woops是啊,我fixxed它;) –