gpt4 book ai didi

java - Android - ArrayIndexOutOfBoundsException 错误

转载 作者:行者123 更新时间:2023-12-01 12:02:09 25 4
gpt4 key购买 nike

我查看了有关此问题的其他帖子,但它们似乎与 editText 字段有某种联系,或者存在一个错误。就我而言,其他帖子中的解决方案似乎都没有帮助。这是我的代码:

public void push(int w, int h) {
int[][] temp_arr = new int[arr.length+1][2];
for (int i=0; i<arr.length; i++) {
temp_arr[i][0] = arr[i][0];
temp_arr[i][1] = arr[i][1];
}
temp_arr[arr.length][0] = w; // happens here
temp_arr[arr.length][1] = h;
arr = temp_arr;
}

这是错误消息:

Process: <package name>, PID: 16749
java.lang.ArrayIndexOutOfBoundsException: length=76; index=76

我该如何解决这个问题?

最佳答案

您有 2 个不同的 Thread 同时调用 push

当第一个执行完push后,它会将arr替换为temp_arr,后者长了1。

当第二个到达temp_arr[arr.length][0]时,出现索引错误,因为arr的大小与时不一样temp_arr 已初始化。

为了防止这种情况,您可以使用 ExecutorService 在同一个 Thread 上连续运行多个 Runnable:http://developer.android.com/reference/java/util/concurrent/Executors.html#newSingleThreadExecutor%28%29

或者您可以添加一个同步 block :

public synchronized void push(int w, int h) {
// ...
}

关于java - Android - ArrayIndexOutOfBoundsException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com