A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

3 个回复

倒序浏览
你不是要遍历嘛。int n = it.next(); 重要的是后半句“it.next();”前半句“int n =”可以去掉。
it.next();这个方法作用是让迭代器it指向下一个元素。没有这一句的话,it就会一直指着同一个元素不动地方,while循环不就成了死循环了,当然要报异常。

点评

哦哦,谢谢  发表于 2016-3-24 20:24
回复 使用道具 举报
都在看这些,所有的视频都学完了吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马