2016-03-27 4 views
-1

Это мой метод, я прошел через все исключения из-за пределов, но не могу понять, что происходит. Это не то же самое, как и другие вопросы, как я попробовал все логические шаги, выпущенные из других вопросовarray out of bounds exception from 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(); 
    } 
    } 

моя таблица модель моды имеют г = 133 строк и с = 249 столбцов, я тогда попытаться положить это в 2d, и независимо от того, что я пытаюсь, я получаю исключения из ограничений, пожалуйста, кто-нибудь может помочь? Ошибки, которые я получил, это 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(); 
} 
    } 

Но я получаю трассировку стека:

Исключение в нити "АВТ-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 249> = 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

Опубликовать stacktrace –

+0

'int rw = 0; rw <= r; rw ++' и 'int cl = 0; cl <= c; cl ++' <--- внимательно посмотрите на это. Наряду с 'String [] [] ps = new String [r] [c];' и 'ps [rw] [cl]' – Tunaki

+0

Я выложу этот стек, но это потому, что я должен иметь rw Ingram

ответ

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 sinces массива индексы начинаются с 0. последней итерации ваших для петель бросить исключение поскольку ps[r][c] не существует.

Вам необходимо изменить <= r и <= c на < r и < c.

+0

У меня есть обновил мой вопрос о том, что я сделал, он не работал – Ingram

+0

@MrAssistance У вас есть ошибка в строке 474. Я не вижу, что вы делаете на линии 474. По-видимому, у вас есть Вектор, и вы делаете ту же ошибку, что и в 'gettablecount'. – Gendarme

+0

Я опубликую способ, когда строка 474 и аннотируется, в основном, что этот метод делает, заполняет пробелы в моей модели таблицы. Моя модель таблицы имеет множество пробелов в своей исходной форме, поэтому я беру данные в ячейке слева, будь то 1 ячейка или 5 ячеек слева – Ingram