我有一个也有null元素的数组。我想跟踪其中包含内容的元素数量。
int counter = 0;
for (int a = 0; i <=array1.length; a ++){
if (array1[a] != null)
counter ++;
}
我使用了上面的代码。但是我在第
行获得了ArrayIndexoutofBound异常if(array1 [a]!= null)
为什么?有人可以指出它。
答案 0 :(得分:3)
替换
for (int a = 0; i <=array1.length; a ++){
通过
for (int a = 0; i <array1.length; a++){
您的代码在元素array1[array1.length]
上失败,因为索引必须介于0
和array1.length - 1
之间。
答案 1 :(得分:2)
当然这是因为你正在迭代一次,而不是数组的长度。
如果数组的长度为3.您的数组存储array[0]
,array[1]
和array[2]
等元素。
数组的索引或任何列表Map Set从0开始。
使用for(int a = 0; a < array1.length;a++)
答案 2 :(得分:2)
array1.length
是数组的大小,但由于索引是从0开始的,因此只能转到array1.length-1
。因此,要么将a <= array1.length
更改为a <= array1.length - 1
,要么将其更改为更常见的a < array1.length
。
答案 3 :(得分:2)
更改
for (int a = 0; i <=array1.length; a ++){
进入
for (int a = 0; i <array1.length; a ++){
没有元素array1[array1.length]
如果你有5
数组的大小意味着你有0
到4
的索引,那么第一个元素的索引是0
,索引是最后一个元素是4
答案 4 :(得分:1)
在“for”循环中,它应该是“a&lt; =”而不是“i”
答案 5 :(得分:1)
switch&lt; = to&lt;在你的for循环中