我在维度n上声明了一个数组,其中n是数组可以包含的最大元素数:
int array[] = new int [n];
我有一个算法,用0到maxValue的值填充此数组。例如:
array[0] = 0;
array[1] = 1;
array[2] = 4;
array[3] = 5;
如果我用:
打印数组,则设n = 8System.out.println("array " + Arrays.toString(array));
我将得到这个输出:
0 1 4 5 0 0 0 0
如果我想检查数组中是否有值0,我该如何排除从数组初始化得到的值?基本上我只想考虑0 1 4 5而不是0 1 4 5 0 0 0 0。
这可以解释,因为如果我有一个不带值0的数组,例如:
array[0] = 3;
array[1] = 1;
array[2] = 4;
array[3] = 5;
数组中未分配的每个元素都是0.因此对于n = 8,我将有3 1 4 5 0 0 0 0并且如果我检查值0是否在数组中,我将收到正。
答案 0 :(得分:4)
你基本上不能 - 不仅仅基于数组本身。 显式设置为0的值与默认为0的值之间没有区别。
您可以将数组更改为Integer[]
类型 - 然后您就没有明确初始化的任何值null
。但是,您无法区分这些默认值并明确将数组元素设置为null ...
答案 1 :(得分:1)
您可以将数组值初始化为"超出范围"让我们说-1。然后你就能分辨出来了。
答案 2 :(得分:0)
保留计数器变量以跟踪您已分配的索引数量。然后,您可以使用此计数器循环索引,以仅检查初始化的索引。这假设您正在逐步将值分配到索引中。