Julius
Julius

Reputation: 321

won't read the first line C#

I have a problem with C# read(){} function. When I open and read my document it does not read the first line:

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

            }
        }
    }

the text file:

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

Upvotes: 2

Views: 1244

Answers (3)

Till Hemmerich
Till Hemmerich

Reputation: 168

 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 Apartaments(nr,plotas,kambariusk,kaina,tnr); // array of apartaments

            apartaments.addapartament(apart); 

        }
    }
}

remove this. since your while condition does this already and you will jump over the first line based on this call. line = reader.ReadLine(); gives you a new line every time you call it. So in your while condition you get your second line without using your first.

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

        }
    }
}

Upvotes: 1

Steve Matthews
Steve Matthews

Reputation: 341

Because you do a line = reader.ReadLine(); then follow it up with the same code in the while loop, by the time it hits it's first iteration of the loop, it's already done a .ReadLine() twice, thus is on the second line of the file.

Remove the line = reader.ReadLine(); from the code and retry.

Upvotes: 1

Rÿck Nöthing
Rÿck Nöthing

Reputation: 177

Remove the first call to line = reader.ReadLine(); You are calling ReadLine() your loop, so you don't need it there.

Upvotes: 2

Related Questions