I am writing a program for school that reduce开发者_开发问答s noise in a sound file. So far i have written this code which I think takes n number of samples before a set one and n after and then averages the two. My problem is that everytime my second for loop runs i get a sampleoutofboundexception. I am guessing this means that it cant find the sample that i am asking it to look for, but i dont understand why.
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;
}
I get the error every single time this line is run and I can't understand why. any help? thank you
sSize2 = aSound.getSample(j).getValue();
What is the value of level
? I'm assuming it's positive, in which case
for (int j = 0; j >= -level; j--)
loops over negative values of j
, and negative indices are generally invalid. That's why you're getting an index out of bounds exception.
If this doesn't solve your problem, you should post some more details, such as what type of object aSound
is.
aSound is an object that holds a wav file with 55125 samples
As aSound is collection. it don't have negative index as written in my comment
I think aSound is a collection, and an array or collection do not have negative index
精彩评论