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

时间:2010-12-14 15:56:15

标签: java

说我有阵列

int theArray = new int[20];

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

13 个答案:

答案 0 :(得分:30)

“伯爵”是什么意思?具有非零值的元素数量?你只需要计算它们。

在该数组与显式设置为零值的数组之间没有区别。例如,这些数组无法区分:

int[] x = { 0, 0, 0 };
int[] y = new int[3];

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

答案 1 :(得分:17)

迭代它并计算非空元素:

int counter = 0;
for (int i = 0; i < theArray.length; i ++)
    if (theArray[i] != null)
        counter ++;

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

要么是这样,要么保留一个计数器,每当你添加一个元素时,都要增加它。

答案 2 :(得分:12)

我认为您可能想要的是ArrayList<Integer>而不是数组。这样您就可以:

ArrayList<Integer> arr = new ArrayList<Integer>(20);
System.out.println(arr.size());

输出为0

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

答案 3 :(得分:4)

Java没有对数组中使用过的元素进行“计数”的概念。

为此,Java使用ArrayListList是在一个数组之上实现的,只要JVM决定它不够大(或者有时它太大),它就会被调整大小。

要获取计数,请使用mylist.size()确保使用mylist.ensureCapacity(20)的容量(基础阵列支持)。要消除额外容量,请使用mylist.trimToSize()

答案 4 :(得分:3)

没有内置功能。此计数是整个用户特定的。维护一个柜台或其他什么。

答案 5 :(得分:3)

  1. 您的代码无法编译,应为int [] theArray = new int[20];;
  2. 您可以将数组长度设为theArray.length;
  3. 对于基本类型,数组将使用默认值初始化(对于int为0)。
  4. 您可以将其设为Integer [] theArray = new Integer[20];,然后按照以下代码对初始化成员进行计数:

    public int count(Object [] array) {
        int c = 0;
        for(Object el: array) { if(el != null) c++; }
            return c;
    }
    
  5. 请注意,这个答案不是为什么你可能需要这个,以及什么是你想要的最佳方式。

答案 6 :(得分:0)

定义一个数组时,你要留出一块内存来保存你想要在数组中拥有的所有项目。

这将具有默认值,具体取决于数组成员类型的类型。

您不能做的是找出已填充的项目数,但在您自己的代码中进行跟踪除外。

答案 7 :(得分:0)

您可以为每个循环使用a并计算重要的整数值的数量。您还可以使用ArrayList来跟踪您的状态。每次从列表中添加或删除对象时,它都会自动更新计数。调用size()方法将为您提供当前的元素数。

答案 8 :(得分:0)

如果您希望拥有一个不会分配所有元素的数组,您将需要自己进行簿记,以确保通过其他变量放入了多少元素。如果你想避免这样做同时获得一个可以在初始实例化后增加容量的“数组”,你可以创建一个 ArrayList

ArrayList<Integer> theArray = new ArrayList<Integer>();
theArray.add(5); // places at index 0
theArray.size(); // returns length of 1
int answer = theArray.get(0); // index 0 = 5

不要忘记将其导入文件顶部:

import java.util.ArrayList;

答案 9 :(得分:0)

如果您假设0不是数组中的有效项,则以下代码应该起作用:

   public static void main( String[] args )
   {
      int[] theArray = new int[20];
      theArray[0] = 1;
      theArray[1] = 2;

      System.out.println(count(theArray));
   }

   private static int count(int[] array) 
   {
      int count = 0;
      for(int i : array)
      {
         if(i > 0)
         {
            count++;
         }
      }
      return count;
   }

答案 10 :(得分:0)

您可以声明一个与数组长度相同的布尔数组:

true:已使用
假:未使用

,并将相同单元格编号的值更改为true。然后,您可以使用for循环来计算使用了多少个单元格。

答案 11 :(得分:-2)

int theArray[] = new int[20];
System.out.println(theArray.length);

答案 12 :(得分:-4)

不仅仅是:System.out.println(Array.length);?因为这就是你正在寻找的东西。