有人能够帮助我解决以下问题,我正在尝试从输入文件中分割数据(每行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);
感谢您的帮助
答案 0 :(得分:1)
只需在null
上添加检查。
如果到达输入流的末尾,则ReadLine方法返回null。这是可能的,因为您选中了!inputFile.EndOfStream
或count < 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(...);
}