说我有阵列
int theArray = new int[20];
数组的长度是20,但计数是0.我怎样才能得到计数?
答案 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使用ArrayList
。 List
是在一个数组之上实现的,只要JVM决定它不够大(或者有时它太大),它就会被调整大小。
要获取计数,请使用mylist.size()
确保使用mylist.ensureCapacity(20)
的容量(基础阵列支持)。要消除额外容量,请使用mylist.trimToSize()
。
答案 4 :(得分:3)
没有内置功能。此计数是整个用户特定的。维护一个柜台或其他什么。
答案 5 :(得分:3)
int [] theArray = new int[20];
; theArray.length
; 您可以将其设为Integer [] theArray = new Integer[20];
,然后按照以下代码对初始化成员进行计数:
public int count(Object [] array) {
int c = 0;
for(Object el: array) { if(el != null) c++; }
return c;
}
请注意,这个答案不是为什么你可能需要这个,以及什么是你想要的最佳方式。
答案 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);
?因为这就是你正在寻找的东西。