Java异常:java.lang.ArrayIndexOutOfBoundsException

时间:2014-12-05 16:50:02

标签: java exception

所以对于我的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();
    }
}

2 个答案:

答案 0 :(得分:2)

这似乎是一个“传统”错误 - 您使用pos初始化int pos = clip.getLength();

然后在第一次迭代时,您执行clip.getSample(pos); - 最后一个元素位于索引clip.getLength() - 1。您正在尝试访问位置clip.getLength()处的元素,这就是您获得索引超出范围错误的原因。

答案 1 :(得分:0)

Java Arrays的索引为零,因此,它们的最后一个索引将比它们的长度小一个。在您的情况下,您假设clip.getLength()是数组中的最后一个元素,但是,当您查看数组的解剖结构时,它实际上是clip.getLength()-1