我正在尝试返回ArrayList<Integer>最大值的第一个索引。下面的代码查找第二个最大值而不是第一个最大值。如何返回循环遇到的第一个最大值?

public int findIndexOfMax() {
    int maxIndex = 0;
    for (int k = 0; k < myFreqs.size(); k++) {
        if (myFreqs.get(k) > maxIndex) {
            maxIndex = myFreqs.get(k);
        }
    }
    return maxIndex;
}


返回的是“测试”。 3'。但是它应该是字母“ a”的第一个最大值为3。

Number of unique words: 7
1   this
1   is
3   a
3   test.
1   yes
1   test
1   of
The word that occurs most often and its count are: test. 3

最佳答案

您似乎忘记了在比较中访问maxIndex处的元素。然后将索引设置为if中元素的值(而不是index)。我想你想要

public int findIndexOfMax() {
    int maxIndex = 0;
    for (int k = 1; k < myFreqs.size(); k++) {
        if (myFreqs.get(k) > myFreqs.get(maxIndex)) {
            maxIndex = k;
        }
    }
    return maxIndex;
}

09-08 01:36