我制作了这段代码:
Integer []array=new Integer[999];
Integer []dump=new Integer[999];
for( int i=0;xconv!=0;++i){//ignore this
array[i]=xconv%2;//ignore this
xconv=xconv/2;//ignore this
System.out.println("array= "+array[i]+" xconv= "+xconv);//ignore this
if(array[i]==null){//<<<<<<look here
array[i]=ArrayUtils.toArray(dump, i);//<<<<<<<<<<<<<look here
}
}
System.out.println(Arrays.toString(array));//<<<<<<look here
我希望IF结构将具有空值的元素移动到名为&#34; dump&#34;的另一个数组,因为如果我不这样做,它会一直显示一堆&#34; null&#34;读取最后一行时的值。我尝试使用ArrayUtils.toArray,但netbeans一直在说我错误地使用它。我应该怎么做,并让它只显示实际上有一些价值的元素?感谢
答案 0 :(得分:0)
这不是如何使用的。检查JavaDoc:
答案 1 :(得分:0)
您似乎无法理解阵列是什么或它们是如何工作的 数组是固定长度的数据结构 该数组中的每个索引都可以包含一个值,或者可以为null。
听起来你正在寻找的是List
,这是一个动态调整大小的数据结构(随着你添加和删除元素,它会增长和缩小)。
当您遍历List
时,您将只看到它当前保存的元素,而不是数组,您需要遍历其长度并检查每个条目以查看其中是否存在值或不
如果您已经结婚使用数组进行计算,您仍然可以轻松地将它们转换为Lists
以便显示。
而不是:
System.out.println(Arrays.toString(array));//<<<<<<look here
试试这个:
System.out.println(Arrays.asList(array));
答案 2 :(得分:0)
只需打印您关注的范围:
int[] array = new int[999];
int i;
for (i = 0; xconv != 0; ++i)
{
array[i] = xconv % 2;
xconv = xconv / 2;
System.out.println("array= " + array[i] + " xconv= " + xconv);
}
System.out.println(Arrays.toString(Arrays.copyOf(array, i)));
更好的是,使用ArrayList
:
List<Integer> array = new ArrayList<>();
for (int i = 0; xconv != 0; ++i)
{
array.add(xconv % 2);
xconv = xconv / 2;
System.out.println("array= " + array.get(i) + " xconv= " + xconv);
}
System.out.println(array.toString());