我正在创建一个android应用程序。当我在Emulator,Samsung S8 Plus和General Mobile GM8中进行测试时,我没有任何错误,但播放控制台总是让我有些迷恋。
代码是:
int count = getItemCount() >= 30 ? 30 : getItemCount();
if (count == 0)
return new long[] {0};
long[] result = new long[count];
for (int i = 0; i < count; i++)
result[i] = users.get(i).getPk();
return result;
错误消息: ArrayIndexOutOfBoundsException
我真的不知道该如何解决。
答案 0 :(得分:1)
在条件正常的情况下删除“ =”符号:
Table "public.ryzom_characters"
Column | Type | Collation | Nullable | Default
---------------+------------------------+-----------+----------+---------
cid | bigint | | |
cname | character varying(255) | | not null |
p06 | jsonb | | |
x01 | jsonb | | |
答案 1 :(得分:0)
例如如果count是4,并且用户列表中只有3个数据或少于count,那么它将抛出ArrayIndexOutOfBoundsException
为避免ArrayIndexOutOfBoundsException
,请尝试以下方法
int count = getItemCount() >= 30 ? 30 : getItemCount();
if (count == 0)
return new long[] {0};
long[] result = new long[count];
if(users != null && users.size() > 0){
for (int i = 0; i < count; i++){
if(i >= users.size()){
break;
}
result[i] = users.get(i).getPk();
}
}
return result;
答案 2 :(得分:0)
如果您想要的数组大小等于users
列表的大小,最多包含30个项目,最少1个元素,则将count
更改为users
列表大小,如果这个大小小于30:
int count = getItemCount() >= 30 ? 30 : getItemCount();
if (count > users.size())
count = users.size();
if (count == 0)
return new long[] {0};
long[] result = new long[count];
for (int i = 0; i < count; i++)
result[i] = users.get(i).getPk();
return result;
答案 3 :(得分:0)
它可能由于索引不足而发生。 让我简化一下,如果数组有4个索引,那么
a=[0,1,2,3]//eg:
因此,如果您要打印[0] o / p =
0
但是对于[5]: 您将拥有 ArrayOutofBoundsExeption
在您的示例中,您未指定用户字段,因此在进行一些假设后是如何生成的。 我告诉你
result[i] = users.get(i).getPk();
此处问题发生在users.get(i)中 用户字段不是包含值但可以是动态的: 所以我的解决方案是 你应该用 尝试异常,然后将其传递给 ArrayIndexOutOfBoundsException
并引发异常,您的程序应该可以正常工作! 希望对您有帮助!
答案 4 :(得分:0)
users
列表的大小似乎不等于counts
,并且更小。为了防止ArrayIndexOutOfBoundsException
,建议您以这种方式编辑代码:
int count = getItemCount() >= 30 ? 30 : getItemCount();
count = count > users.size() ? users.size() : count;
if (count == 0)
return new long[] {0};
long[] result = new long[count];
for (int i = 0; i < count; i++)
result[i] = users.get(i).getPk();
return result;
通过这样修改代码,在users
列表大于counts
的情况下,users
列表末尾的项目将没有任何控件。