Как перебрать многомерный массив без ошибки outOfBounds - PullRequest
0 голосов
/ 25 января 2019

Как сделать так, чтобы цикл for проходил только через один подсписок многомерного массива char, не получая исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException error.

char[][] letters = {
    {'a','e','i','o','u','l','n','s','t','r'},
    {'d','g'},
    {'b','c','m','p'},
    {'f','h','v','w','y'},
    {'k'},
    {'j','x','q','z'}
};

for(int i= 0; i < letters[0].length; i ++)
{
    System.out.println(letters[1][i]);
}

1 Ответ

0 голосов
/ 25 января 2019

Вы печатаете значения подсписка second с этим, потому что индекс начинается с 0. И так как у второго подсписка есть только 2 элемента, ArrayIndexOutOfBoundsException генерируется на третьей итерации

измените его на это, и оно будет работать:

System.out.println(letters[0][i]);

Редактировать: из вашего комментария я понял, что вы хотите сделать то же самое не только для первого подсписка, но и для любого из них.Здесь важно то, что при обоих упоминаниях letter[x] х должно быть одинаковым.Таким образом, вы можете использовать переменную для этого.

int sublistIndex = 0; // choose any index  (0-based) to define which sublist
char[][] letters = {{'a','e','i','o','u','l','n','s','t','r'},{'d','g'},
       {'b','c','m','p'},{'f','h','v','w','y'},{'k'},{'j','x','q','z'}};
for(int i= 0; i < letters[sublistIndex].length; i ++)
{
   System.out.println(letters[sublistIndex][i]);
}
...