Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 条件语句/循环错误:某些元素未到达if和else?_Java_Arraylist - Fatal编程技术网

Java 条件语句/循环错误:某些元素未到达if和else?

Java 条件语句/循环错误:某些元素未到达if和else?,java,arraylist,Java,Arraylist,基本上,我有3个ArrayList:items、frequency和uniqueitems。项目包含所有元素列表,例如:面包、黄油、果酱、黄油、牛奶、果酱。Uniqueitems包含Uniqueitems,例如:面包、黄油、果酱、牛奶。频率包含它们在项目中出现的次数,按唯一项目的顺序排列,例如:1,2,2,1 但我的一些元素在if或else中都没有出现(Jam,见附图)。还有一些元素,尽管使用if,但没有从我的arraylist(ColdLink)中删除。听起来很傻,真的。但是从昨晚开始我就遇到

基本上,我有3个ArrayList:items、frequency和uniqueitems。项目包含所有元素列表,例如:面包、黄油、果酱、黄油、牛奶、果酱。Uniqueitems包含Uniqueitems,例如:面包、黄油、果酱、牛奶。频率包含它们在项目中出现的次数,按唯一项目的顺序排列,例如:1,2,2,1

但我的一些元素在if或else中都没有出现(Jam,见附图)。还有一些元素,尽管使用if,但没有从我的arraylist(ColdLink)中删除。听起来很傻,真的。但是从昨晚开始我就遇到了这个问题。netbeanside。也在联机编译器上运行了我的代码。它给出了与我的IDE相同的答案。那么,我到底犯了什么错?(附输出)

int-min\u-sup=2;
INTV;

对于(i=0;i当调用
frequency.remove(i)
时,
frequency
列表中的前一个
i+1
元素将成为新的
i
元素,这意味着循环的下一次迭代将跳过该元素,因为
i
在每次迭代中都会递增

每当删除元素时,可以通过减小i来处理它:

for(i=0;i<frequency.size();i++)
{
      v=frequency.get(i);
      if(v<min_sup)
      {
          uniqueitems.remove(i);
          frequency.remove(i);
          System.out.println(uniqueitems.get(i)+ " is inside if.");
          i--;
      }
      else
      {
          System.out.println(uniqueitems.get(i)+ " is not in if.");
      }  
}

for(i=0;i调用
frequency.remove(i)
时,
frequency
列表中前一个
i+1
元素将成为新的
i
元素,这意味着循环的下一次迭代将跳过该元素,因为
i
在每次迭代中都会递增

每当删除元素时,可以通过减小i来处理它:

for(i=0;i<frequency.size();i++)
{
      v=frequency.get(i);
      if(v<min_sup)
      {
          uniqueitems.remove(i);
          frequency.remove(i);
          System.out.println(uniqueitems.get(i)+ " is inside if.");
          i--;
      }
      else
      {
          System.out.println(uniqueitems.get(i)+ " is not in if.");
      }  
}

用于(i=0;i项转到if两侧的明显原因是当它被for-loop完全跳过时。您不应该在从同一列表进行迭代时删除项转到if两侧的明显原因是当它被for-loop完全跳过时。您不应该在从同一列表进行迭代时删除项同样的清单好了,谢谢。我完全忘了。好了,谢谢。我完全忘了。