java: исключение sampleoutofbounds - PullRequest
0 голосов
/ 13 ноября 2010

Я пишу программу для школы, которая уменьшает шум в звуковом файле. До сих пор я написал этот код, который, я думаю, берет n чисел выборок до заданной единицы и n после, а затем усредняет две. Моя проблема в том, что каждый раз, когда запускается мой второй цикл for, я получаю пример исключения исключения. Я предполагаю, что это означает, что он не может найти образец, который я прошу его искать, но я не понимаю, почему.

for (int s = 0; s<= aSound.getNumSamples(); s++){    

  for ( int i=0; i<=level ; i++ ) {
    nSamp = aSound.getSample(i);
    sSize = nSamp.getValue();
    total=total + sSize;
  }

  for (int j = 0; j >= -level; j--){
    sSize2 = aSound.getSample(j).getValue();
    total1 = total1 + sSize2;
  }
  avg = (total1 + total) / level*2;

  for (int i = 0; i <= level*2+1; i++){
    result.getSample(i).setValue(avg);
  }
 }
 return aSound;
  }

Я получаю сообщение об ошибке каждый раз, когда запускается эта строка, и я не могу понять, почему. любая помощь? спасибо

sSize2 = aSound.getSample(j).getValue();

Ответы [ 2 ]

2 голосов
/ 13 ноября 2010

Какое значение level? Я предполагаю, что это положительно, в этом случае

for (int j = 0; j >= -level; j--)

зацикливается на отрицательных значениях j, и отрицательные индексы обычно недопустимы. Вот почему вы получаете исключение индекса за пределами границ.

Если это не решит вашу проблему, вам следует опубликовать более подробную информацию, например, о типе объекта aSound.

0 голосов
/ 13 ноября 2010

aSound - это объект, содержащий wav-файл с 55125 сэмплами

Как звучит коллекция. у него нет отрицательного индекса, как написано в моем комментарии

Я думаю, что aSound - это коллекция, а массив или коллекция не имеют отрицательного индекса

...