在一个函数中,我想初始化一个最大大小为n的java数组,最初是空的。如果我添加3个元素(比如n> 3)并返回数组,那么数组应该只包含3个元素而不是3个元素后跟(n-3)0。
//PSEUDO CODE
func(){
//Create array A of max size 5
A[0]=1;
A[1]=2;
A[2]=3;
return A;
}
main(){
int[] B=func();
//B.length should give 3
for (int i=0;i<B.length;i++){
print B[i];
}
/*Should print 1 2 3
and Not 1 2 3 0 0
*/
}
我不想使用数组列表。我只想使用java数组。
答案 0 :(得分:0)
然后你必须自己使阵列动态化。每次你向数组添加一个元素时,都要创建一个size = no元素的新数组(让你添加第3个元素,然后新数组的大小为3)。将旧数组中的元素转换为新数组。每次你添加1个元素你必须遵循这个。
答案 1 :(得分:0)
您的问题似乎是您只想打印数组的非默认值。如果您的值始终不等于零,那么您可以这样做:
for (int i=0;i<B.length;i++){
if (B[i] != 0){
print(B[i]);
}
}
但是,如果您的值也可以为零,您还可以保留当前有多少值的计数器,并且只打印那么多值:
int counter = 3; //the array might be {1, 2, 3, 0, 0}
for (int i=0; i<counter; i++){
print(B[i]); //will print "1 2 3"
}
每次添加值时,计数器必须递增。 但这两种解决方案都受到限制,具体取决于您访问和使用阵列的方式。