我试图在Java循环中满足条件时递减增量器,例如:
假设我们有一个包含许多(升序排序)整数的ArrayList,当我遇到2个或更多后续相等的整数时,我想将它们合并:
for(int i=0; i<intArr.size();i++){
if(intArr.get(i).equals(intArr.get(i+1))){
intArr.set(i,(intArr.get(i) + intArr.get(i+1)));
intArr.remove(i+1);
i--;
}
}
消息底部的一个更具体的示例。
这将失败,增量器(i)将被“临时”设置为(i--),但是当它返回for行时,它将具有其原始值。
H您是否知道如何递减i,以便在下一次迭代时仍可以比较(i == i + 1?)
谢谢
public class Test
{
private static final long serialVersionUID = 1L;
public static void main(String[] args)
{
ArrayList<Integer> intArray = new ArrayList<Integer>();
intArray.add(1);
intArray.add(2);
intArray.add(3);
intArray.add(4);
intArray.add(4);
intArray.add(4);
intArray.add(5);
intArray.add(6);
intArray.add(7);
intArray.add(8);
intArray.add(9);
intArray.add(9);
intArray.add(9);
intArray.add(9);
intArray.add(10);
intArray.add(11);
intArray.add(12);
intArray.add(12);
for (int i = 0; i < (intArray.size() - 1); i++)
{
if (intArray.get(i).equals(intArray.get(i + 1)))
{
intArray.set(i, (intArray.get(i) + intArray.get(i + 1)));
intArray.remove(i + 1);
i--;
}
}
for (int i = 0; i < intArray.size(); i++)
{
System.out.println(intArray.get(i));
}
}
}
印刷品:
1
2
3
8
4
5
6
7
8
18
18
10
11
24
最佳答案
那是因为当找到前两个4时,会将它们更改为8。现在,当第三个4出现时,数组为
1个
2
3
8
4
5
6
。
。
。
所以这次,它检查是否为(8 == 4),这是错误的。因此,它跳过了下4个!