就我编写的程序而言,我有一个运行良好的脚本。在该脚本中,我有一个 do-while 循环,其中还有两个 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)