我试图在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 行时,它将具有其原始值。HD你知道如何减少 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