Java异常:Java.lang.ArrayIndexOutOfBoundsException
因此,对于我的Ap计算机科学课程,我的一个项目不断获得Java异常:Java.lang.ArrayIndexOutOfBoundsException,java,exception,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 A
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();
}
}
这似乎是一个“传统”错误-您使用int pos=clip.getLength()初始化pos
代码>
然后在第一次迭代中执行clip.getSample(pos)代码>-最后一个元素位于索引clip.getLength()-1
。您正试图访问位于位置clip.getLength()
的元素,这就是为什么会出现索引越界错误。Java数组以索引为零开始,因此,它们的最后一个索引将比其长度小一个。在您的情况下,假设clip.getLength()
是数组中的最后一个元素,但是,当您查看数组的解剖结构时,它实际上是clip.getLength()-1
您能显示堆栈跟踪吗?嗯,它看起来像是您的类之一。。。你能添加它的代码吗?或者,如果太长,字段、构造函数和getSample
方法?确切地说,java中的数组从零开始。最后一个元素是array[array.length-1]。