tablemodel中的数组超出范围异常 -

时间:2016-03-27 19:41:40

标签: java arrays tablemodel

这是我的方法,我已经完成了每个出界的异常,但无法解决最新情况。这与其他问题不同,因为我已经尝试了从其他问题发出的所有逻辑步骤

private void gettablecount(TableModel mod){

 int r =  mod.getRowCount()+1;
 int c = mod.getColumnCount()+1;
  String[][] ps = new String[r][c];

  for (int rw = 0;rw <=r;rw++){
     for (int cl = 0;cl<=c;cl++){
       ps[rw][cl] = mod.getValueAt(rw, cl).toString();

        System.out.print(ps[rw][cl] + "  ");

     }
     System.out.println();
     } 
  }

我的表模型mod有r = 133行和c = 249列,然后我尝试把它放到一个二维数组中,无论我尝试什么我不断超出范围的例外,请有人提供一些帮助吗?我得到的错误是x> = x或-1,或者只是x,试图解决这个问题。应该很直接,但我不知道发生了什么。

我刚试过这个:

private void gettablecount(TableModel mod){

 int r =  mod.getRowCount()+1;
 int c = mod.getColumnCount()+1;
String[][] ps = new String[r][c];

for (int rw = 0;rw <r;rw++){
    for (int cl = 0;cl<c;cl++){
        ps[rw][cl] = mod.getValueAt(rw, cl).toString();

        System.out.print(ps[rw][cl] + "  ");

    }
    System.out.println();
} 
  }

但是我得到了堆栈跟踪:

线程中的异常“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException:249&gt; = 249     在java.util.Vector.elementAt(Vector.java:474)

这是我的向量,其中第474行是,我有474行注释

public synchronized E elementAt(int index) {
    if (index >= elementCount) {
//line 474 below
        throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount);
    }

    return elementData(index);
}

1 个答案:

答案 0 :(得分:0)

String[][] ps = new String[r][c];

for (int rw = 0;rw <=r;rw++){
    for (int cl = 0;cl<=c;cl++){
        ps[rw][cl] = mod.getValueAt(rw, cl).toString();
        //System.out.println(powerstation[rw][cl] + "\t");
        System.out.print(ps[rw][cl] + "  ");

    }
    System.out.println();
} 

ps的长度为r,但最后一个索引为r-1,因为数组索引从0开始.for-loops的最后一次迭代会抛出异常,因为{{ 1}}不存在。

您需要将ps[r][c]<= r更改为<= c< r