我正在尝试返回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;
}
我认为您使用左侧的整数作为右侧字符串的索引,当您第二次使用3作为索引时,它将值“a”与“test”重叠。