为什么找不到i

cysccnu 2007-12-02 08:42:21
为什么找不到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
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolingshi 2007-12-03
  • 打赏
  • 举报
回复
二楼说的对,你把下边代码跟你的代码比一下看看
int i;
for(i = 5; i>0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e){
System.out.println(name + ":" + i);
}
gong19870209 2007-12-03
  • 打赏
  • 举报
回复
二楼说的对,这是变量的作用域的问题,for循环中定义的变量只能在for循环内使用.
wensheng_zh2007 2007-12-02
  • 打赏
  • 举报
回复
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.");
}
}
xuanwoxihuan 2007-12-02
  • 打赏
  • 举报
回复
for(int i = 5; i > 0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e) {
System.out.println(name + ": " + i);
}
不出错才怪呢
要注意区别全局变量与局部变量
action_520_12 2007-12-02
  • 打赏
  • 举报
回复
是你catch中的那行代码出错呢

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧