如何初始化大小为n的int java数组最初为空?

时间:2018-02-17 12:04:54

标签: java arrays

在一个函数中,我想初始化一个最大大小为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数组。

2 个答案:

答案 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"
}

每次添加值时,计数器必须递增。 但这两种解决方案都受到限制,具体取决于您访问和使用阵列的方式。