数组[index + 1]导致程序发生FATAL错误

时间:2016-12-31 15:29:59

标签: java android arrays

我有整数计数,这是我的数组索引,假设count等于5,所以我的arrayWeight[count]索引/计数等于5。 数组内的值是双精度数,并且数组中的所有5个单元格都使用并包含值。

现在我愿意将所有arrayWeight[]值添加到DataPoint[]数组中,尽管DataPoint[]中的索引等于6(count + 1)。 并且数组中的第六个索引在循环外部使用,如下所示:

    double[] arrayWeight = new double[count]; // Array of user weight
    DataPoint[] dp = new DataPoint[count+1];
        for (int i = 0; i < count; i++) { // Array weight is inserted into datapoints y and i is the x so the graph will follow the (x,y)
            dp[i] = new DataPoint(i, arrayWeight[i]);
            Log.d("ArrayWeight", "equals: " + arrayWeight[i]);
            Log.d("Array", "equals: " + i);
        }
    dp[count+1] = new DataPoint(count+1, db.getDetails().getWeight());
    return dp;

我可以告诉你,当我从索引中删除+1并且只使用count时代码正在工作,但是我需要使用count + 1,所以我可以向DataPoint[]数组添加另一个值。

错误讯息:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.none.myapplication, PID: 12760
java.lang.RuntimeException: Unable to start activity   
ComponentInfo{com.none.myapplication/com.none.myapplication.MainActivity}:  
java.lang.ArrayIndexOutOfBoundsException: length=6; index=6

如何修复数组索引值,以免造成致命错误?

4 个答案:

答案 0 :(得分:0)

您应该在此行中使用dp[count] dp [count + 1]:

dp[count+1] = new DataPoint(count+1, db.getDetails().getWeight());

因为dp中的索引将为0来计算

答案 1 :(得分:0)

索引应为count而不是count + 1。 for循环中的最后一个索引是count - 1。看到循环是i < count

答案 2 :(得分:0)

dp [count + 1]在您的代码中无效。数组索引从0开始,所以如果你的count = 5,count + 1 = 6.所以dp的长度是6,但索引从0到5开始。

你应该在for循环之后执行dp [count]来解决这个问题。

答案 3 :(得分:0)

数组dp具有count + 1个索引,因此最高索引为count(因为第一个为零)。 取代

dp[count+1] = new DataPoint(count+1, db.getDetails().getWeight());

dp[count] = new DataPoint(count, db.getDetails().getWeight());

解决问题。