このエラーが発生し、テキストファイルから配列を取り込もうとしています。私はそれが私のif
ループと関係があるかもしれないと思うが、私は本当にわからない。それは私にmyData[9]
の範囲外エラーを与えています。私がしたいことは、最初の文字がD
(次のものはアップデートであることを意味する)であるかどうかを確認して、更新オブジェクトを作成することです。私のupdate.txt
ファイルには、myData[9]
が私に範囲外のエラー(具体的にはlastThirty
に設定しようとするところ)を与えている理由が混乱しているので、myData
を入力するためのものが10個しかありません。次のように配列インデックスが文字列ファイルから読み込み中にエラーが発生する
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のオブジェクトがないようです。ファイルを表示してください。 – Gendarme
いずれかの行に10個未満の項目があるか、またはファイルが 'updated'配列よりも多くの行を持っています(固定サイズの配列ではなく' List'にしたいと思うかもしれません)。コードのどの行にエラーが発生したかを指定した方が簡単です。 –
上記の抜粋の17行目で発生します。更新オブジェクト配列のサイズは200で、ファイルには5つの更新しかないため、問題はありません。私はちょうどダブルtxtファイルをチェックし、すべての更新は10項目を持って、更新コンストラクタは10項目があり、私はそれを10のものを渡しています。 – Thomas