如何重用2D数组?

时间:2013-11-09 05:29:55

标签: android arrays

我正在使用Android加速计传感器数据。我将通过使用传感器数据来识别用户的运动模式。大部分工作已经完成。但问题是跟踪连续轴值并将它们存储在2D阵列中。作为测试应用程序,我想用以下类型的数据填充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,...

时创建一个新数组或开始重新填充相同的数组

我该怎么做?

2 个答案:

答案 0 :(得分:0)

在您的情况下,您可以使用2-D ArrayList而不是2-D数组。

ArrayList<ArrayList<Integer>>

答案 1 :(得分: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超出绑定异常