黑马程序员技术交流社区

标题: 有100个人围成一个圈,有个问题不懂,求大神解答 [打印本页]

作者: 715596417    时间: 2016-3-24 19:23
标题: 有100个人围成一个圈,有个问题不懂,求大神解答
  1. import java.util.ArrayList;
  2. import java.util.Iterator;

  3. /**
  4. * 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。 问:最后剩下的是100人中的第几个人?
  5. */
  6. public class CopyOfTest10 {
  7.         public static void main(String[] args) {
  8.                 ArrayList<Integer> al = new ArrayList<Integer>();
  9.                 for (int x = 1; x <= 100; x++) {
  10.                         al.add(x);
  11.                 }

  12.                 int count = 0;
  13.                 while (al.size() > 1) {                       
  14.                         Iterator<Integer> it = al.iterator();
  15.                         while (it.hasNext()) {
  16.                                 count++;
  17.                                 int n=it.next();[color=Red]//这行注释掉就会有异常,为什么啊?[/color]
  18.                                 if (count % 14 == 0) {
  19.                                         it.remove();
  20.                                 }
  21.                         }
  22.                 }
  23.                 System.out.println("最后剩下的是第" + al.get(0) + "人");
  24.         }
  25. }
复制代码

作者: yijincheng    时间: 2016-3-24 20:21
你不是要遍历嘛。int n = it.next(); 重要的是后半句“it.next();”前半句“int n =”可以去掉。
it.next();这个方法作用是让迭代器it指向下一个元素。没有这一句的话,it就会一直指着同一个元素不动地方,while循环不就成了死循环了,当然要报异常。
作者: lgdbest    时间: 2016-3-24 21:30
都在看这些,所有的视频都学完了吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2