私がプログラムした限り、問題なく動作するスクリプトがあります。そのスクリプト内には do-while ループがあり、その中にさらに 2 つの do-while ループがあり、一方が他方に供給されます。
わかりやすくするために、いくつかのコードを削除しました。
StockArray.stockCodeArray();// creates stockcode array
FileArray.fileListArray(); // creates array of file names to input into
// ImportFiles
ImportFiles.importAscii(); // reads file. if debug: creates importarray
do {
ObsHandler.obsPartsHandler(); // read part descriptions into temp
// array
ObsHandler.search();
} while (!endline.equals(null));
obsPartsHandler():
String numberline;
ObsHandler o1 = new ObsHandler("Part");
if (i < ImportFiles.importarray.size()) {
do {
numberline = ImportFiles.importarray.get(i); //editted here
i = i + 1;
} while (!numberline.startsWith(".Number"));
i = i + 1; // set i to second line of part description
do {
i = i + 1; // set i to next line
} while (!numberline.equals(""));
if (i < ImportFiles.importarray.size()) {
endline = ImportFiles.importarray.get(i);
System.out.println(endline);
}
}
すべての変数が初期化されました。search() メソッドは現在空白です。
ループを通過すると、省略した出力ストリームが表示されますが、これはループが正しく機能していることを示しています。
私が抱えている問題は、プログラムを実行すると、obsPartsHandler の if ステートメントから期待される OutOfBoundsException がコンソール上の場所で予測できないことです。私は疑問に思っていますが、それでもそれを仮定すると、これは私が間違ったことをしたことです.
削除したコードが多すぎる場合は、コメントしてください。再度追加します。
例外:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 307, Size: 307
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at ams.ObsoletePartsHandler.org.ObsHandler.obsPartsHandler(ObsHandler.java:58)
at ams.ObsoletePartsHandler.org.ObsHandler.main(ObsHandler.java:35)