使用“new”关键字创建对象实例

时间:2016-11-11 06:36:11

标签: c# arrays split

有人能够帮助我解决以下问题,我正在尝试从输入文件中分割数据(每行2个数据,由下面代码中指定的任一分隔符分隔)。为此,我已经声明了字符串数组'split input',但是当我运行程序时,我得到一个运行时错误(screenshot),while循环中的split输入行以黄色突出显示。我看不出我做错了什么,我正在复制样本代码似乎工作正常:( 注意 - 黄色下面的messageBox行只是为了我的测试来证明拆分工作

        private int DetermineArraySize(StreamReader inputFile)
    {
        int count = 0;
        while (!inputFile.EndOfStream)
        {
            inputFile.ReadLine();
            count++;
        }
        return count;
    }

    private void ReadIntoArray(StreamReader inputFile, string[] gameArray, int[] revArray)
    {
        string rawInput;
        string[] splitInput = new string[2];
        int count = 0;
        char[] delimiters = {'=', '@',};

        while (!inputFile.EndOfStream || count < gameArray.Length)
        {
            rawInput = inputFile.ReadLine();
            {
                splitInput = rawInput.Split(delimiters);
                MessageBox.Show(splitInput[0] + " // " + splitInput[1]);

                count++;
            }

        }

    }

    private void rdGameSalesForm_Load(object sender, EventArgs e)
    {

        StreamReader inputFile = File.OpenText("GameSales.txt");    //Open Input File
        int arraySize = DetermineArraySize(inputFile);              //Use input file to determine array size
        string[] gameTitle = new string[arraySize];                 //Declare array for GameTitle
        int[] revenue = new int[arraySize];                         ///Declare array for Revenue

        ReadIntoArray(inputFile, gameTitle, revenue);

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

只需在null上添加检查。

如果到达输入流的末尾,则ReadLine方法返回null。这是可能的,因为您选中了!inputFile.EndOfStreamcount < gameArray.Length。所以在第二个条件下有可能在输入filre读取时变为空

 while (!inputFile.EndOfStream || count < gameArray.Length)
        {
            rawInput = inputFile.ReadLine();
            if(rawInput !=null)
            {
              splitInput = rawInput.Split(delimiters);
              MessageBox.Show(splitInput[0] + " // " + splitInput[1]); 
            }
        }

答案 1 :(得分:0)

检查null而不是流的结束。

 while((rawInput = Inputfile.ReadLine()) != null)
 {
     splitInput = rawInput.Split(delimiters);
     MessageBox.Show(...);
 }