继续获得异常,没有输入值到数组

时间:2016-09-17 19:45:58

标签: c# nullreferenceexception

这是我的代码..我试图从带有逗号分隔数据的文件读入,并且名称在文件中为"Doe,John"所以我使用它来获取名称,没有它被逗号分开......

fileIn = new TextFieldParser(INPUT_FILE_NAME);
    fileIn.TextFieldType = FieldType.Delimited;
    fileIn.SetDelimiters(",");
    fileIn.HasFieldsEnclosedInQuotes = true;

以下是我的一些源代码。该名称未被放入nameArray[i] = words[1];

static void InputEmployeeData()
{
  int i;
  string[] words;

  numOfEmployee = Int32.Parse(fileIn.ReadLine());
  idArray = new int[numOfEmployee];
  nameArray = new string[numOfEmployee];
  deptArray = new int[numOfEmployee];
  payrateArray = new double[numOfEmployee];
  hoursArray = new double[numOfEmployee];
  for (i = 0; i <= numOfEmployee; i++)
  {
    words = fileIn.ReadFields();
    idArray[i] = Int32.Parse(words[0]);
    nameArray[i] = words[1];
    deptArray[i] = Int32.Parse(words[2]);
    payrateArray[i] = Double.Parse(words[3]);
    hoursArray[i] = Double.Parse(words[4]);
  }
}

我正在读取的数据文件中的一个示例行就是这个。

0090,"Baker, John",1,32.57,50.75

我有numOfEmployee = readline,因为文件顶部有元数据,让我知道文件中有多少人。我继续在第86行获得异常(对象引用未设置为对象的实例)....

idArray[i] = int.Parse(words[0]);

1 个答案:

答案 0 :(得分:2)

您需要更改此行

for (i = 0; i <= numOfEmployee; i++)

for (i = 0; i < numOfEmployee; i++)

for循环循环多次,因为它从零开始,所以你应该停在numOfEmployee - 1。如果按原样执行循环,则在最后一个循环中words数组被TextFieldParser.ReadFields设置为null,并且您将获得对象引用未设置异常