你好像把自己绕进去了,边界值处理上有些问题,建议不在原来基础上改了。看看这份代码怎么样:
import java.util.LinkedList;
public class yuesefu {
public static String scanPeople(String n, String c) {
LinkedListpList = new LinkedList ();
try {
int count = Integer.parseInt(c);
int pNum = Integer.parseInt(n);
for (int j = 0; j < pNum; j++) {
pList.add(j + 1);
}
System.out.println(pList);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
int circleCount = 0;
while (pList.size() > 1) {
for (int i = 0; i < pList.size(); i++) {
circleCount++;
if (circleCount == count) {
pList.remove(i);
circleCount = 0;
i--;
System.out.println(pList);
}
}
}
System.out.println("try before return");
return String.valueOf(pList.get(0));
} catch (NumberFormatException e) {
System.out.println("try before return");
return "0";
} finally {
System.out.println("finally");
}
}
public static void main(String[] args) {
System.out.println(yuesefu.scanPeople("5", "2"));//5个人,数2踢出
}
}
输出结果:
[1, 2, 3, 4, 5]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[1, 3, 4, 5]
[1, 3, 5]
[3, 5]
[3]
try before return
finally
3