循环不会按预期将项添加到列表中

use*_*614 1 java loops

我想基于某个名为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)

Arn*_*lle 5

你的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)