这是我的方法,我已经完成了每个出界的异常,但无法解决最新情况。这与其他问题不同,因为我已经尝试了从其他问题发出的所有逻辑步骤
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);
}
答案 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
。