黑马程序员技术交流社区

标题: 请教个问题这是怎么回事 [打印本页]

作者: 走遍世界找寻你    时间: 2013-11-13 20:34
标题: 请教个问题这是怎么回事
package itcast.interview.traffic;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class Road {

        private List<String> vehicles = new ArrayList<String>();
        private String name=null;
        public Road(String name){
                this.name = name;

                ExecutorService pool= Executors.newSingleThreadExecutor();
                pool.execute(new Runnable(){
                        public void run() {
                                for(int i = 1;i < 1000;i++)
                                        Thread.sleep(1000);
                                        vehicles.add(Road.this.name + "_" + i);
                                }
                });
        }
}
i有什么问题?为什么会这样。


作者: 付凯鹏    时间: 2013-11-13 20:45
  for(int i = 1;i < 1000;i++)
                                        Thread.sleep(1000);
                                        vehicles.add(Road.this.name + "_" + i);
                                }
这几句话里,for循环里面只是有 Thread.sleep(1000);这句话,而 vehicles.add(Road.this.name + "_" + i);这句话不在for循环里面,因此不能使用for循环里面的i变量,你可能是for循环下面少加了"{}"
作者: 起猿    时间: 2013-11-14 00:56

  1. <P>//你这是太马虎了</P>
  2. <P>public class Road {

  3. private List<String> vehicles = new ArrayList<String>();
  4. private String name=null;
  5. public Road(String name){
  6. this.name = name;

  7. ExecutorService pool= Executors.newSingleThreadExecutor();
  8. pool.execute(new Runnable(){
  9. public void run() {
  10. for(int i = 1;i < 1000;i++){//for 循环是有方法体的,写在{}内,而你的程序正好缺了这个左右花括号;
  11. Thread.sleep(1000);
  12. vehicles.add(Road.this.name + "_" + i);}
  13. }
  14. });
  15. }
  16. }</P>
复制代码





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