int数组中的元素未找到(虽然它应该)
问题描述:
我没有得到正确的索引。谁能告诉我为什么?我期望0作为索引,而不是-1。int数组中的元素未找到(虽然它应该)
int[] id = {R.id.buKeyPadNum1, ...} **(EDIT)**
int index = Arrays.asList(id).indexOf(v.getId());
Log.i("onClick", "v.getId "+ String.valueOf(v.getId())+" ButtonId "+String.valueOf(id[0])
+" Index "+String.valueOf(index));
logcat的: 8月9日至二十五日:11:32.039:I /的onClick(1680):v.getId 2131296337 ButtonId 2131296337索引-1
答
Arrays.asList(id)
返回List<long[]>
。 indexOf()
仅适用于Long[]
对象。见this answer。
尝试使用Long[]
类型为id
。
+1
是“int [] id = {R.id.buKeyPadNum1,...}”必须是“Integer [] id = {}” – user2462619 2014-09-25 08:49:59
答
考虑这样的代码:
int ix = Arrays.asList(new int[]{1,2}).indexOf(1);
// result: -1
int ix = Arrays.asList(new Integer[]{1,2}).indexOf(1);
// result: 0 (found)
可能你的数组包含了与indexOf参数不同类型的元素。
索引'-1'表示它不存在。 'v.getId()'的值在你的数组中不存在 – Baby 2014-09-25 08:26:43
'id.equals(v.getId())'似乎更有意义 – epoch 2014-09-25 08:28:01
-1意味着它是空的并且它不存在。 – 2014-09-25 08:29:34