ArrayIndexOutOfBoundsException выбрасывается несмотря на то, что индекс массива находится в пределах границ - PullRequest
0 голосов
/ 27 января 2019

Хорошо, эта ошибка впервые возникла при использовании for для загрузки группы песен, названия которых я перечислил в отдельном массиве, как показано ниже.Примечательно, что я выполнял этот набросок на устаревшей версии звуковой библиотеки, и эта же строчка вызвала ошибку, наподобие «Я искал действительный заголовок MPEG после 65536 байтов мусора».Если я загрузил только одну песню, указанная ошибка не появилась.Больше чем это, и это сделало.Однако теперь, когда я обновил звуковую библиотеку, она дает мне исключение ArrayIndexOutOfBounds: 3. Это не только странно, поскольку в массиве, который я использую, максимальный допустимый индекс должен быть 7 (поскольку его длина равна 8), но также и потому, чтоЯ использую ArrayIndex 1. См. Ниже.

Мои попытки избавиться (или, по крайней мере, изолировать) ошибку можно увидеть в коде ниже.Если это может быть полезным, я использую Processing 3.5, последнее обновление библиотеки Sound и OS X 10.9.5 (избавьтесь от насмешек).


String[] titles={"Small Bump", "This", "I See Fire", "The City ", "The City", "Cake By The Ocean", "Never Gonna Give You Up", "Innamoratissimo"};
SoundFile[] songs= new SoundFile[titles.length];
int i=0;  
void setup(){  
  //for (int i=0; i<songs.length; i++) songs[i]=new SoundFile(this,titles[i]+".mp3");
  //This one gave me a fault
  //for (int i=0; i<1; i++) songs[i]=new SoundFile(this,titles[i]+".mp3");
  //This one ran ok
  //for (int i=0; i<2; i++) songs[i]=new SoundFile(this,titles[i]+".mp3");
  //This one threw a fit again
  //So I decided to list them manually to make sure the for wasn't doing funky stuff
  songs[0]=new SoundFile(this,"Small Bump.mp3");
  songs[1]=new SoundFile(this,"This.mp3");  //This is the line causing mayhem. See how the ArrayIndex is neither out of bounds nor 3?
}
...