0

我正在使用 Android 加速度计传感器数据。我将通过使用该传感器数据来识别用户的运动模式。大部分工作已经完成。但问题是跟踪连续轴值并将它们存储在二维数组中。作为一个测试应用程序,我想double[2][3]用以下类型的数据填充一个数组。

[9.594786195244101, 7.118138482942524, 14.240399748761671],
[9.45045389772222, 7.35019779174396, 13.271781719935262]

可以填充数组。但问题是,我想重新填充相同的数组以获得下一组值。这是我的代码。

double[][] test;
static int sampleNumber = 1;
static int j = 1;

public void onSensorChanged(SensorEvent event) {

    if (started) {
        if(sampleNumber == (j*2)-1)
        {
            test = null;
            test = new double[2][3];                
            j+=1;
        }   

        test[sampleNumber-1][0] = magAvg;
        test[sampleNumber-1][1] = magMin;
        test[sampleNumber-1][2] = magMax;
        sampleNumber += 1;
    }
}

执行此代码时,当 sampleNumber = 3 时获得 ArrayOutOfBoundsException。我想在 sampleNumber = 1、3、5 时创建一个新数组或开始重新填充同一个数组,...

我该怎么做?

4

2 回答 2

0

在您的情况下,您可以使用二维ArrayList而不是二维数组。

ArrayList<ArrayList<Integer>>

于 2013-11-09T05:43:08.960 回答
0

无论如何,您正在创建测试数组 2*3 ... 当 sampleNumber = 3 您想像这样填充数组:

test[2][0] = magAvg;
test[2][1] = magMin;
test[2][2] = magMax;

但是您正在使用创建测试数组

new double[2][3]

然后测试只有 0 和 1 作为索引并且访问 index=2 是超出范围的异常

于 2013-11-09T05:44:27.587 回答