【发布时间】:2016-04-24 23:49:48
【问题描述】:
我在尝试从文本文件填充数组时遇到此错误。我认为这可能与我的if 循环有关,但我真的不确定。它给了我myData[9] 的越界错误。我要做的是检查第一个字母是否是D(意味着下面的东西是更新),然后制作一个更新对象。我的update.txt 文件中只有 10 个东西可以填充myData,这就是为什么我很困惑为什么myData[9] 给了我一个越界错误(特别是我尝试将它设置为等于@987654327 @)。
scan = new Scanner(file);
while (scan.hasNext())
{
String str = scan.nextLine();
String[] myData = str.split("#");
if (myData[0].equalsIgnoreCase("D"))
{
recordType = myData[0];
actionCode = myData[1];
boxID = Integer.parseInt(myData[2]);
movieID = Integer.parseInt(myData[3]);
movieTitle = myData[4];
movieGenre = myData[5];
releaseYear = myData[6];
inStock = myData[7];
totalRentals = Integer.parseInt(myData[8]);
lastThirty = Integer.parseInt(myData[9]);
updates[count] = new UpdateRecord(recordType, actionCode, boxID, movieID, movieTitle, movieGenre, releaseYear, inStock, totalRentals, lastThirty);
count++;
}
文件内容如下:
H#Title Town Video Mart Updates#04\24\2016
D#A#4#5#Harry Potter#Action#2001#True#50#5
D#A#4#5#Shutter Island#Suspense#2001#True#50#5
D#A#4#5#The Blind Side#Drama#2001#True#50#5
D#A#4#5#Borat#Comedy#2001#True#50#5
D#A#4#5#Bad GrandPa#Comedy#2001#True#50#5
T#Title Town Video Mart Updates#04\24\2016#5
【问题讨论】:
-
您的数组在索引 9 中似乎没有对象。向我们展示您的文件。
-
您的任一行少于 10 个项目,或者文件的行数超出了
updates数组可以容纳的数量(您可能希望将其设为List而不是固定大小的数组) .如果您在代码中指出错误发生在哪一行会更容易。 -
它出现在上面摘录的第 17 行。更新对象数组的大小为 200,文件中只有 5 个更新,所以这应该不是问题。我只是仔细检查了 txt 文件,每次更新都有 10 项,更新构造函数有 10 项,我正在向其中传递 10 项。