Cheesegraterr
Cheesegraterr

Reputation: 517

java: sampleoutofbounds exception

I am writing a program for school that reduces 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();

Upvotes: 0

Views: 39

Answers (2)

Javed Akram
Javed Akram

Reputation: 15354

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

Upvotes: 0

casablanca
casablanca

Reputation: 70731

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.

Upvotes: 2

Related Questions