#java #eclipse #arraylist #indexoutofboundsexception
#java #eclipse #список массивов #исключение indexoutofboundsexception
Вопрос:
Я пытаюсь автоматизировать приложение. Для этого я использую хэш-карту для набора данных Excel и создал свои методы для выполнения действий с этими данными.
Файл класса для выполнения показан ниже
@Test
public void testLAP_Creamix() throws Exception {
try {
launchMainApplication();
Lapeyre_frMain Lapeyre_frMainPage = new Lapeyre_frMain(tool, test, user, application);
HashMap<String, ArrayList<String>> win = CreamixWindowsDataset.main();
SortedSet<String> keys = new TreeSet<>(win.keySet());
for (String i : keys) {
System.out.println("########### Test = " win.get(i).get(0) " ###########");
Lapeyre_frMainPage.EnterTaille(win.get(i).get(1));
Lapeyre_frMainPage.SelectCONFIGURATION(win.get(i).get(2));
Lapeyre_frMainPage.SelectPLANVASQUE(win.get(i).get(3));
Lapeyre_frMainPage.SelectCOULEUR(win.get(i).get(4));
Lapeyre_frMainPage.SelectPOIGNEES(win.get(i).get(5));
Lapeyre_frMainPage.SelectTYPE_DE_MEUBLE(win.get(i).get(6));
Lapeyre_frMainPage.VerifyPanierPrice(win.get(i).get(7));
Lapeyre_frMainPage.VerifyECO_PARTPrice(win.get(i).get(8));
Lapeyre_frMainPage.ClickCREAMIXReinit();
System.out.println("########### Test End ##############");
}
test.setResult("pass");
} catch (AlreadyRunException e) {
} catch (Exception e) {
verificationErrors.append(e.getMessage());
throw e;
}
}
Код хэш-карты :
public static HashMap<String, ArrayList<String>> main() throws IOException {
final String DatasetSheet = "src/test/resources/CreamixDataSet.xlsx";
final String DatasetTab = "Creamix";
Object[][] ab = DataLoader.ReadMyExcelData(DatasetSheet, DatasetTab);
int rowcount = DataLoader.myrowCount(DatasetSheet, DatasetTab);
int colcount = DataLoader.mycolCount(DatasetSheet, DatasetTab);
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
// i = 2 to avoid column names
for (int i = 2; i < rowcount;) {
ArrayList<String> mycolvalueslist = new ArrayList<String>();
for (int j = 0; j < colcount;) {
mycolvalueslist.add(ab[i][j].toString());
j ;
}
map.put(ab[i][0].toString(), mycolvalueslist);
i ;
}
return map;
}
Запрос: я смог запустить этот код несколько дней назад, но теперь, после добавления нескольких новых столбцов, он выдает указанную ниже ошибку.
Индекс IndexOutOfBoundsException 7 выходит за пределы длины 7
Я не могу отследить проблему здесь, что мне следует искать? пожалуйста, помогите!
Комментарии:
1. пожалуйста, добавьте всю трассировку стека
2. ну, я подозреваю, что у вас
colcount
всего 7, но вы пытаетесь получить доступwin.get(i).get(7)
к иwin.get(i).get(8)
.3. Примечание: чрезвычайно однообразно размещать операторы increment внутри тела — почему бы не оставить их в том месте
for(init;condition;increment)
, где они принадлежат?
Ответ №1:
for (String i : keys) {
arr = win.get(i);//debug here,watch it size
Lapeyre_frMainPage.EnterTaille(arr.get(1));
}