2016-10-05 4 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()이 두 번 수행되므로 파일의 두 번째 줄에 있습니다.

줄을 지우려면 = 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 상태에서는 첫 번째 라인을 사용하지 않고 두 번째 라인을 얻습니다.

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 선에게 내가 그것을 fixxed 그래 – Theraot

+0

woops을 읽을 계속되지 않습니다 D) –

관련 문제