我在尝试从文本文件填充数组时遇到此错误。我认为它可能与我的if
循环有关,但我真的不确定。它给了我myData[9]
上的越界错误。我想要做的是检查第一个字母是否是D
(意味着以下内容是更新),然后创建更新对象。我的update.txt
文件中只有10个内容可以填充myData
,这就是为什么我对myData[9]
给我一个越界错误的原因感到困惑(特别是在我尝试的地方)设置等于lastThirty
)。
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
答案 0 :(得分:1)
这取决于如何写入txt,但String[] myData = str.split("#");
可能只返回一个数组长9,因此访问第10个元素会导致错误。
例如,考虑“boo#和#foo”应该返回一个String [3]。你的txt功能应该返回一个String [10]。
尝试修改txt以添加另一个'#'并查看它是否有效,或者更好地在调试中查看数组的内容。