你如何计算java中数组的元素

El *_*ser 18 java

说我有阵列

int theArray = new int[20];
Run Code Online (Sandbox Code Playgroud)

数组的长度是20,但计数是0.我怎么能得到计数?

Jon*_*eet 30

"伯爵"是什么意思?具有非零值的元素数量?你只需要数数吧.

没有区别数组和一个已之间明确地设置与零个值.例如,这些数组是无法区分的:

int[] x = { 0, 0, 0 };
int[] y = new int[3];
Run Code Online (Sandbox Code Playgroud)

Java中的数组总是有固定的大小 - 通过length字段访问.没有"当前使用的阵列数量"的概念.


Tar*_*ama 17

迭代它并计算非null的元素:

int counter = 0;
for (int i = 0; i < theArray.length; i ++)
    if (theArray[i] != null)
        counter ++;
Run Code Online (Sandbox Code Playgroud)

这可以通过使用for来实现:每个循环等等,但这是jist.

无论是那个,还是保留一个计数器,每当你添加一个元素时,都要增加它.


jjn*_*guy 12

我认为你可能想要的是一个ArrayList<Integer>而不是一个数组.这将允许您:

ArrayList<Integer> arr = new ArrayList<Integer>(20);
System.out.println(arr.size());
Run Code Online (Sandbox Code Playgroud)

输出将是0.

然后,您可以将内容添加到列表中,它将跟踪您的计数.(它也会根据您的需要增加后备存储的大小.)


kha*_*hik 6

  1. 你的代码不会编译,它应该是int [] theArray = new int[20];
  2. 你可以得到数组长度theArray.length
  3. 对于原始类型,数组将使用默认值(0 表示 int)进行初始化。
  4. 您可以创建它Integer [] theArray = new Integer[20];,然后像此代码那样计算初始化成员:

    public int count(Object [] array) {
        int c = 0;
        for(Object el: array) { if(el != null) c++; }
            return c;
    }
    
    Run Code Online (Sandbox Code Playgroud)

请注意,这个答案不是关于您为什么需要这个以及做您想做的事情的最佳方法是什么。