私はプログラミングとクラスの課題に取り組んできたことがとても新しいです。さて、私の誰かが私のコードを書くことを求めているわけではありませんが、私は実行時エラーに悩まされています。ファイルの読み込みには、最初の行「15」を使用して配列のサイズを初期化し、配列に各行の情報を入力します。なぜ "ArrayIndexOutOfBoundsException"が発生しましたか?
編集:私はそれがあまりにも長く見えるだろうと思ったので、私はすべてのコードを投稿したくなかったが、曖昧であるためにdownvotesのため、ここに行く。
ファイル:
15
produce,3554,broccoli,5.99,1
produce,3554,broccoli,5.99,1
produce,3555,carrots,2.23,0.25
produce,3555,carrots,2.23,0.25
produce,3555,carrots,2.23,0.25
cleaning,2345,windex,5.99,1 unit
cleaning,2345,windex,5.99,1 unit
cleaning,2345,windex,5.99,1 unit
cleaning,2345,windex,5.99,1 unit
cleaning,2346,toilet paper,12.99,4 rolls
cleaning,2346,toilet paper,12.99,4 rolls
cleaning,2335,windex,2.25,1 mini sprayer
cleaning,1342,wipes,3.99,10 units
cleaning,1342,wipes,3.99,10 units
produce,3546,lettuce,2.99,0.5
マイエラー:問題のライン45と
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
at Inventory.readFile(Inventory.java:45)
at Inventory.<init>(Inventory.java:12)
at Supermarket.main(Supermarket.java:3)
クラス(行45はコメント化されて、右にスクロール)」
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class Inventory{
Product[] list;
String[] invData;
private int i = 0;
public int count;
public Inventory (String f){
readFile(f);
}
public int indexOfProduct(int code){
for(i=0; i<list.length; i++){
if (list[i] != null)
if (list[i].getCode() == code)
return i;
}
return -1;
}
public Product delete(int pos){
Product temp = new Product();
temp = list[pos];
list[pos] = null;
return temp;
}
public void readFile(String fileName){
try{
File invList = new File (fileName);
Scanner s = new Scanner(invList);
int itemCount = s.nextInt();
list = new Product[itemCount];
count = itemCount;
while (s.hasNext()){
String line = s.nextLine();
invData = line.split(",");
if (invData[0].equals("produce")){
list[i] = new Produce(invData[1], invData[2], invData[3], invData[4]); // This is Line 45, Where the error occurs
} else if(invData[0].equals("cleaning")){
list[i] = new Cleaning(invData[1], invData[2], invData[3], invData[4]);
}
i++;
}//end of while loop
} catch (FileNotFoundException Abra) {
String error = Abra.getMessage();
System.out.println(error);
}
} // end of method
public Product findCode(int c){
for(int i=0; i<list.length;i++)
if(list[1].getCode() == c)
return list[i];
return null;
}//end of method
}//end of class
なぜ私は "ArrayIndexOutOfBoundsException"を取得しましたか?私は誰かが私のロジックの欠陥を指摘できるので、私は再びそれを繰り返さないことを願っています。
おそらく、あなたがライン45であるかを示すために気にしたいです?私たちのOuijaボードは今晩はうまく動作しません。 –
また、 'list'をどこで定義しますか –
はい、本当にメソッドlocalsであるべきであるいくつかのグローバル変数があります。 –