Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在要追加的ArrayList中找到最高值_Java_Arraylist - Fatal编程技术网

Java在要追加的ArrayList中找到最高值

Java在要追加的ArrayList中找到最高值,java,arraylist,Java,Arraylist,在这段代码中,我正在搜索包含以下内容的数组列表: [1,1,2,1,2,1,1,1,1,1,1,1,1,1,1] 我编写代码来查找ArrayList中最高值的索引,然后将这些索引附加到名为 int high = findRelevance.get(0); ArrayList<Integer> IndicesOfHighest = new ArrayList(); for (int iiii = 0; iiii < findRelevance.size(); iiii++) {

在这段代码中,我正在搜索包含以下内容的数组列表:

[1,1,2,1,2,1,1,1,1,1,1,1,1,1,1]
我编写代码来查找ArrayList中最高值的索引,然后将这些索引附加到名为

int high = findRelevance.get(0);
ArrayList<Integer> IndicesOfHighest = new ArrayList();
for (int iiii = 0; iiii < findRelevance.size(); iiii++)
{
    if (findRelevance.get(iiii) > high)
    {
        IndicesOfHighest.clear();
        IndicesOfHighest.add(iiii);

    }
    if (findRelevance.get(iiii) == high)
    {
        IndicesOfHighest.add(iiii);
    }
}


[1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1]

int high = findRelevance.get(0);
i、 e高=1。您从未更新high的值。 所以

由于无论何时findRelevance.get(iii)==1(高总是1),都会执行此if块

因此,当high的值为2时,您希望更新该值

int high = findRelevance.get(0);
    ArrayList<Integer> IndicesOfHighest = new ArrayList();
    for (int iiii = 0; iiii < findRelevance.size(); iiii++)
    {
        if (findRelevance.get(iiii) > high)
        {
            IndicesOfHighest.clear();
            IndicesOfHighest.add(iiii);
            high = findRelevance.get(iii); //added line


        }
        if (findRelevance.get(iiii) == high)
        {
            IndicesOfHighest.add(iiii);
        }
    }
int-high=findRelevance.get(0);
ArrayList indicatesofhighest=新ArrayList();
对于(int iiii=0;iiii高)
{
表示最高。清除();
表示最高。添加(iiii);
high=findRelevance.get(iii);//添加了行
}
如果(findRelevance.get(iiii)=高)
{
表示最高。添加(iiii);
}
}
  • 您永远不会更新
    高值
  • 因为没有
    else if
    子句,如果您修复了它,您最终将得到
    [2,2,4]

  • 更一般地说,学习调试。程序员通常不会变成无误的机器。使用调试器,或者如果您没有时间或耐心学习如何使用调试器,请添加大量System.out.println语句:这样做的目的是跟随代码,使用纸笔或头脑计算代码应该做什么。当你发现你认为应该发生的事情和实际发生的事情之间存在差异的时候?您发现了一个bug,并且通常有足够的上下文来了解出了什么问题。

    这是一个漫长的编码之夜,非常感谢!!这是一个漫长的编码之夜,非常感谢!!
     if (findRelevance.get(iiii) == high)
    
    int high = findRelevance.get(0);
        ArrayList<Integer> IndicesOfHighest = new ArrayList();
        for (int iiii = 0; iiii < findRelevance.size(); iiii++)
        {
            if (findRelevance.get(iiii) > high)
            {
                IndicesOfHighest.clear();
                IndicesOfHighest.add(iiii);
                high = findRelevance.get(iii); //added line
    
    
            }
            if (findRelevance.get(iiii) == high)
            {
                IndicesOfHighest.add(iiii);
            }
        }