我有整数计数,这是我的数组索引,假设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
如何修复数组索引值,以免造成致命错误?
答案 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());
解决问题。