所以对于我的Ap计算机科学课我的一个项目继续得到java.lang.ArrayIndexOutOfBoundsException
:390000它是一个声音反向文件
以下是代码:
import sounds.APSoundClip;
import sounds.Sample;
public class ReverseSound {
public static void main(String[] args) {
APSoundClip clip = new APSoundClip("money.wav");
APSoundClip newClip = clip.clone();
int pos = clip.getLength();
int cloned = 0;
for(Sample clipSample : clip) {
clip.getSample(pos); //error is here
int newValue = clipSample.getValue();
newClip.getSample(cloned).setValue(newValue);
pos--;
cloned++;
}
newClip.draw();
}
}
答案 0 :(得分:2)
这似乎是一个“传统”错误 - 您使用pos
初始化int pos = clip.getLength();
然后在第一次迭代时,您执行clip.getSample(pos);
- 最后一个元素位于索引clip.getLength() - 1
。您正在尝试访问位置clip.getLength()
处的元素,这就是您获得索引超出范围错误的原因。
答案 1 :(得分:0)
Java Arrays的索引为零,因此,它们的最后一个索引将比它们的长度小一个。在您的情况下,您假设clip.getLength()
是数组中的最后一个元素,但是,当您查看数组的解剖结构时,它实际上是clip.getLength()-1
。