从文本文件填充时数组索引超出界限错误

时间:2016-04-24 23:49:49

标签: java arrays file

我在尝试从文本文件填充数组时遇到此错误。我认为它可能与我的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

1 个答案:

答案 0 :(得分:1)

这取决于如何写入txt,但String[] myData = str.split("#");可能只返回一个数组长9,因此访问第10个元素会导致错误。

例如,考虑“boo#和#foo”应该返回一个String [3]。你的txt功能应该返回一个String [10]。

尝试修改txt以添加另一个'#'并查看它是否有效,或者更好地在调试中查看数组的内容。