所以我有一个android应用程序,经常被迫关闭。为什么在我的logcat上,以下方法经常会导致错误?
static void solveTSP(int[][] valuesMatrix) {
shortestDistance = Integer.MAX_VALUE;
longestDistance = Integer.MIN_VALUE;
shortestPath = null;
int totalPlaces = valuesMatrix.length;
ArrayList<Integer> places = new ArrayList<>();
for(int i=0; i<totalPlaces; i++){
places.add(i);
}
int startPlace = places.get(0);// in logcat, this line is the cause of the Index error Out of Bounds Exception: Invalid index 0, size is 0. How does that happen?
int currentDistance = 0;
bruteForceSearch(valuesMatrix, places, startPlace, currentDistance);
}
答案 0 :(得分:1)
如果valuesMatrix
为空,则places
的长度为0,内部没有值,因此尝试执行places.get(0)
时出错。
答案 1 :(得分:1)
1)请尝试记录您的valuematrix长度,因为错误地明确提到valuesMatrix大小为零,因此您的地方列表也为空。因此,当您尝试获取第0个元素时,它将引发相同的异常。
2)另一件事是,您只将0到valuematrix长度存储在场所列表中,因此,startplace的值始终为零(0)。
答案 2 :(得分:1)
valuesMatrix 的长度定为0,该长度已分配给 totalPlaces 。 因此,“ for”循环不会运行,并且不会将任何内容添加到ArrayList “位置” 。 因此,当您尝试从其第零位置获取价值时,就会遇到异常。 检查 places 变量的大小,如果大于零,则仅继续执行以下语句:
for(int i=0; i<totalPlaces; i++){
places.add(i);
}
if (places.size() > 0) {
int startPlace = places.get(0);
}