#file
#файл
Вопрос:
У меня проблема с 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
Ответ №1:
Удалите первый вызов line = reader.ReadLine();
, который вы вызываете ReadLine() вашего цикла, поэтому он вам там не нужен.
Ответ №2:
Поскольку вы выполняете строку = reader.ReadLine(); затем выполняете тот же код в цикле while, к тому времени, когда он попадает на первую итерацию цикла, он уже дважды выполняет .ReadLine() , таким образом, находится во второй строке файла.
Удалите строку = reader.ReadLine(); из кода и повторите попытку.
Ответ №3:
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 вы получаете вторую строку, не используя первую.
способ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);
}
}
}
Комментарии:
1. woops да, я исправил это 😉