【发布时间】:2014-09-24 00:46:19
【问题描述】:
我有一个二维数组质心,它的每个元素都是一个数组本身。如何检查 centroids[1][1] 列表是否包含任何元素?
我认为这段代码可以工作,但事实并非如此。
for (int j=0; j<centroids[clusterAssignment[i]].length;j++)
if(centroids[clusterAssignment[i]].length==0)
首先是因为centroids[clusterAssignment[i]].length 没有给我正确的质心数量列表,只是告诉我它是 2,因为质心有维度 x 和 y (2d)。
其次,因为我不知道如何检查作为数组的 clusterAssignment[i] 是否对于所有可用质心列表中的质心 i 的长度为零。
更新:此代码不起作用:
for (int i = 0; i < centroids.length; i++){
//System.out.println("centroids[clusterAssignment[i]] "+ Arrays.toString(centroids[clusterAssignment[i]]));
//System.out.println("clusterassignment of centroid is"+centroids[clusterAssignment[i]]);
for (int j=0; j<centroids[clusterAssignment[i]].length;j++)
// System.out.println("cluster assignment of centroid is: "+Arrays.toString(centroids[clusterAssignment[i]]));
if (centroids[clusterAssignment[i]] == null){
//save the centroid number if there's no point assigned to it
orphanCentroid = i;
System.out.println("orphan centroid i is "+i);
hasOrphanCentroid=true;
break;
}
}
【问题讨论】:
-
centroids[clusterAssignment[i]] == null -
它不工作。因为质心长度始终为 2。它不会查看内部数组!
-
centroids的类型是什么?另外,clusterAssignment 代表什么? -
我必须使用 centroids[clusterAssignment[i]] 其中 clusterAssignment 是
int[] clusterAssignment = new int[instances.length];和double[][] instances。 -
@Multithreader 基本上质心是二维的点。
标签: java arrays multidimensional-array iteration