java.lang.ArrayIndexOutOfBoundsException:难以确定错误发生的位置

java.lang.ArrayIndexOutOfBoundsException:难以确定错误发生的位置,java,excel,loops,multidimensional-array,jxl,Java,Excel,Loops,Multidimensional Array,Jxl,我正在尝试编写一个基本的java程序,它从excel电子表格中收集数据并将其存储在数组中。我遇到的问题是,我得到了ArrayOutOfBounds异常,但看不到超出数组边界的地方。我甚至故意将数组的尺寸标注为大大大于循环终止值: import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffExce

我正在尝试编写一个基本的java程序,它从excel电子表格中收集数据并将其存储在数组中。我遇到的问题是,我得到了ArrayOutOfBounds异常,但看不到超出数组边界的地方。我甚至故意将数组的尺寸标注为大大大于循环终止值:

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;





public class InputArray {

    public static void main(String[] args) {
        String[][] InputArray1;
        int i = 0;
        int j = 0;

        InputArray1 = new String[220][220];

        try{
        Workbook OLE1Shots = Workbook.getWorkbook(new File("C:/Book12.xls"));
        Sheet inList = OLE1Shots.getSheet(0);
        for (i = 0; i < 190; i++){
            Cell aCell = inList.getCell(i, 0);
            Cell bCell = inList.getCell(i, 1);
            String strIn = aCell.getContents();
            String strOrd = bCell.getContents();
            if (strIn != ""){
                InputArray1[0][j] = strIn;
                InputArray1[1][j] = strOrd;
                j = j + 1;
            }

        }
        }

        catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        for (i = 0; i < 190; i++){
            System.out.println(InputArray1[0][i]);
            System.out.println(InputArray1[1][i]);
        }
    }


}
如果有人能找出这里出了什么问题,那就太好了。希望结果只是我的愚蠢

编辑:

我在做一些愚蠢的事。引发错误的是,我使用VBA表示单元位置(行,列),jxl使用(列,行)。我更改了这些行:

for (i = 0; i < 190; i++){
    Cell aCell = inList.getCell(i, 0);
    Cell bCell = inList.getCell(i, 1);

变量“i”从0变为189,并被输入到从电子表格中读取单元格的方法。电子表格有那么多行吗?请注意,在电子表格程序中出现行并不一定意味着这些行在电子表格文件中表示


消息会准确地(如果不是完全地)告诉您错误所在——太大的索引是“2”,报告错误的方法是
getCell()
,行号会告诉您错误发生在程序中的什么位置

我认为调试代码会有帮助…在“for”循环之前检查列表的大小。不要试图超出这个范围。表上的范围是24 x 2单元格,有数据,所以我尝试将循环限制减少到I<10,作为测试,但我仍然得到了错误。当我调试时,正如迷失的头脑所暗示的,我得到一条消息“源附件不包含文件SheetImpl.class的源”。我已经尝试重新下载jxl,但我仍然收到此消息。请确保“接受”回答您的问题的答案(并且向上投票也很好);这是stackoverflow工作原理的一部分…Hi rcook。这次投票是我的,因为我发现你给我的暗示很有用。我总是尝试在回答完整问题的帖子上打勾。我会把你的帖子归类为一个有用的提示或线索,而不是一个完整的答案,然而,这就是为什么我没有勾选它的原因,但我很感谢你的帮助,它确实帮助我找到了答案。这不是因为行数过多吗?
for (i = 0; i < 190; i++){
    Cell aCell = inList.getCell(i, 0);
    Cell bCell = inList.getCell(i, 1);
c = inList.getRows();
    for (i = 0; i < c; i++){

         Cell aCell = inList.getCell(0, i);
         Cell bCell = inList.getCell(1, i);
InputArray as localhost contains obsolete methods. The virtual machine was unable to remove all stack frames running old code from the call stack...