为什么找不到i一个多线程的例子,java编译后说找不到i,请大虾们帮我看看:class NewThread implements Runnable {
  String name;
  Thread t;
  NewThread(String threadname) {
    name = threadname;
    t = new Thread(this,name);
    System.out.println("New thread: " + t);
    t.start();
  }
  public void run() {
    try {
      for(int i = 5; i > 0; i--) {
        System.out.println(name + ": " + i);
        Thread.sleep(1000);
      }
    }catch (InterruptedException e) {
     System.out.println(name + ": " + i);     
    }
    System.out.println(name + "exiting.");
  }
}class MultiThreadDemo {
  public static void main(String args[]) {
    new NewThread("One");
    new NewThread("Two");
    new NewThread("Three");
    try {
      Thread.sleep(10000);
  } catch (InterruptedException e) {
    System.out.println("Main thread Interrupted.");
  }
  System.out.println("Main thread exiting.");
}
}编译结果:
C:\Workspace>javac MultiThreadDemo.java
MultiThreadDemo.java:17: cannot find symbol
symbol  : variable i
location: class NewThread
     System.out.println(name + ": " + i);
                                      ^
1 error

解决方案 »

  1.   

    是你catch中的那行代码出错呢
      

  2.   

    for(int   i   =   5;   i   >   0;   i--)   { 
                    System.out.println(name   +   ":   "   +   i); 
                    Thread.sleep(1000); 
                } 
            }catch   (InterruptedException   e)   { 
              System.out.println(name   +   ":   "   +   i);           
            } 
    不出错才怪呢
    要注意区别全局变量与局部变量
      

  3.   

    class   NewThread   implements   Runnable   { 
        String   name; 
        Thread   t; 
        NewThread(String   threadname)   { 
            name   =   threadname; 
            t   =   new   Thread(this,name); 
            System.out.println("New   thread:   "   +   t); 
            t.start(); 
        } 
        public   void   run()   { 
             
                for(int   i   =   5;   i   >   0;   i--)   { 
                             //note
      try  {
    System.out.println(name   +   ":   "   +   i); 
    Thread.sleep(1000);
     }catch   (InterruptedException   e)   { 
      System.out.println(name   +   ":   "   +   i);           
    }// 
                } 
           
            System.out.println(name   +   "exiting."); 
        } 
    } class   MultiThreadDemo   { 
        public   static   void   main(String   args[])   { 
            new   NewThread("One"); 
            new   NewThread("Two"); 
            new   NewThread("Three"); 
            try   { 
                Thread.sleep(10000); 
        }   catch   (InterruptedException   e)   { 
            System.out.println("Main   thread   Interrupted."); 
        } 
        System.out.println("Main   thread   exiting."); 


      

  4.   

    二楼说的对,你把下边代码跟你的代码比一下看看
    int i;
    for(i = 5; i>0; i--) {   
          System.out.println(name + ": " + i);   
              Thread.sleep(1000);   
       }   
    }catch (InterruptedException e){   
        System.out.println(name  + ":"  + i);                       
    }   
      

  5.   

    二楼说的对,这是变量的作用域的问题,for循环中定义的变量只能在for循环内使用.