我想基于某个名为GAD的值来聚集一些字母,在每次迭代时我想添加每个聚类具有最高值的字母,这将继续直到没有字母留下.
这里的问题是代码执行第一次迭代是正确的(添加具有簇0的最高值的字母)然后在它应该找到下一个簇的最高字母时停止.
注意:簇的数量是4.而变量'clusters'是一个对象数组,其中每个对象都包含一个列表.
do {
if (count == 4) {
count = 0;
}
for (int j = 0; j < unassignedLetters.size(); j++) {
if (unassignedLetters.get(j).getGADVal(count) > max) {
max = unassignedLetters.get(j).getGADVal(count);
maxLetter = unassignedLetters.get(j);
System.out.println("maxLetter for cluster " + count + " is: " + maxLetter.getLetter());
} else if (unassignedLetters.get(j).getGADVal(count) == max) {
maxLetter = CLDMax(sheet, this.clusters[count], max, maxLetter, unassignedLetters.get(j));
}
}
this.clusters[count].addLetter(maxLetter);
unassignedLetters.remove(maxLetter);
System.out.println("Letter " + maxLetter.getLetter() + " has been added cluster " + count);
maxLetter = null;
count++;
} while (unassignedLetters.isEmpty());
Run Code Online (Sandbox Code Playgroud)
你的while病情似乎错了:
do{
[...]
for (int j = 0; j < unassignedLetters.size(); j++) {
[...]
} while(unassignedLetters.isEmpty());
Run Code Online (Sandbox Code Playgroud)
它应该是 :
while(!unassignedLetters.isEmpty());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |