Android中的ArrayIndexOutOfBoundsException

时间:2014-04-17 04:05:04

标签: java android arrays

我有30个具有不同值的双数组,我想要一个循环来初始化所有这些数组。我的双数组看起来像这样,

double[] VALUES0 = new double[] { 27, 62, 125 };
double[] VALUES1 = new double[] { 33, 75, 150 };
double[] VALUES3 = new double[] { 44, 100, 200 };
double[] VALUES4 = new double[] { 50, 112, 225 };
double[] VALUES5 = new double[] { 55, 125, 250 };

我做了一个循环,将所有这些从VALUES0初始化为VALUES30,但它显示异常。

double[] VALUES[] = {};

        int x = 27, y = 62, z = 125;

        for (int i = 0; i < 30; i++) {

            VALUES[i] = new double[] { x, y, z };

            x += 6;
            y += 13;
            z += 25;
    }

4 个答案:

答案 0 :(得分:3)

java中的数组是固定大小,VALUES大小,因为您使用以下方法静态创建(忽略错误语法):

double[] VALUES[] = {};

最重要的是,您似乎想要创建一个二维数组。

java中的数组是对象,Java中的多维数组是数组引用的数组。您需要声明并实例化一个包含对double数组的引用的数组,并使用您需要的大小创建它(显然是30)。其语法是:

double[][] VALUES = new double[30][];

请注意,VALUES现在包含30个设置为null的元素。每个元素都可以保存对双数组的引用。您必须通过VALUES[i] = new double[someSize];实例化和分配每个元素,或者像示例中那样使用静态初始化。

答案 1 :(得分:2)

试试这个:

public class HelloWorld{

     public static void main(String []args){
        double[] VALUES[] = new double[30][];

        int x = 27, y = 62, z = 125;

        for (int i = 0; i < 30; i++) {

            VALUES[i] = new double[] { x, y, z };

            x += 6;
            y += 13;
            z += 25;
        }
     }
}

说明: VALUES 是一个双数组,是Java中的数组数组。因此,在使用之前,您应该创建它 - 大小为30的双数组数组。

答案 2 :(得分:0)

尝试以下

    double[] VALUES[] = new double[30][];

    int x = 27, y = 62, z = 125;

    for (int i = 0; i < 30; i++) {

        VALUES[i] = new double[]{x, y, z};

        x += 6;
        y += 13;
        z += 25;
    }

答案 3 :(得分:0)

double [] [] VALUES = new double [30] [3];

    for (int i = 0; i < 30; i++) {

        VALUES[i] = new double[] { x, y, z };

        x += 6;
        y += 13;
        z += 25;
}