java - 数组 java :90 (ArrayIndexOutOfBoundsException)

标签 java arrays indexoutofboundsexception

然后我执行这段代码:

 private int[] getAmplitude(byte[] fft) {
        int[] amplitude = new int[fft.length/2-2] ;
        for (int i = 2; i <= fft.length/2-2;i+= 2) {
            for(int j=0;j<= fft.length/2-2;j++){
            amplitude[j]=(fft[i] * fft[i] + fft[i + 1] * fft[i + 1]);}
        }
        return amplitude;

我得到了这个:

java.lang.ArrayIndexOutOfBoundsException
    at com.astroplayerbeta.gui.eq.EqVisualizerCaptureAudio.getAmplitude(EqVisualizerCaptureAudio.java:90)
    at com.astroplayerbeta.gui.eq.EqVisualizerCaptureAudio.onFftDataCapture(EqVisualizerCaptureAudio.java:67)
    at android.media.audiofx.Visualizer$NativeEventHandler.handleMessage(Visualizer.java:484)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3835)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
    at dalvik.system.NativeStart.main(Native Method)

这是我的麻烦吗?

fft[] 数组的长度为 1024。

最佳答案

假设 fft.length/2-2 是 3。那么振幅是一个大小为 3 的数组。

现在你说

for(int j=0;j<= fft.length/2-2;j++){
    amplitude[j]=(fft[i] * fft[i] + fft[i + 1] * fft[i + 1]);
}

如果我用英语写的话,那就是:对于 j = 0 到 3,将一些东西放入振幅[j]中。因此,您将 4 个值放入振幅,这是一个大小为 3 的数组。因此,您将得到一个 ArrayIndexOutOfBoundsException。将行更改为

for(int j=0;j< fft.length/2-2;j++){
    amplitude[j]=(fft[i] * fft[i] + fft[i + 1] * fft[i + 1]);
}

(<= 更改为 <),您应该已设置完毕。

请注意,您在 fft 及其 for 循环中也遇到了类似的问题。

关于java - 数组 java :90 (ArrayIndexOutOfBoundsException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643337/

相关文章:

java - 单击列本身中的 HtmlCommandButton 即可删除 HtmlColumn

java - 如何在 Phonegap 中读取 CT10 蓝牙条码扫描仪的数据?

javascript - 如何仅考虑每个子数组的索引[0]对多维数组进行排序?

java - 数组搜索时出现 IndexOutOfBoundsException

java - 列表大小具有意想不到的值(value)

java - Spring - 如何配置 RestTemplate 以使用 toString() 方法作为对象序列化器?

java - 我在将文本读入数组时遇到问题,我需要在此代码中更改什么?

c++ - 使用类的成员

javascript - 过滤路径数组以仅保留最浅的路径

java - ArrayIndexOutOfBoundException - hsqldb?