程序里一句i%10000把我弄蒙了,不会了
下面标红的地方public class TestThread4 {
public static void main(String args[]){
Runner4 r = new Runner4();
Thread t = new Thread(r);
t.start();
for(int i=0;i<10000;i++){
if(i%10000==0 & i>0)//???问题(一)这行 不太懂,
System.out.println("in thread main i=" + i);//问题(二)for这个程序只打印出一行,就是"Thread main is over"???为啥啊?问题(三)若是想循环,为什么只让输出一行,若是只想输出一行,用这种方法干啥
}
System.out.println("Thread main is over");
r.shutDown();
//t.stop();
}
}
class Runner4 implements Runnable {
private boolean flag=true;
public void run() {
int i = 0;
while (flag==true) {
System.out.println("这是run的方法 " + i++);
}
}
public void shutDown() {
flag = false;
}
}
[ 本帖最后由 灯、、 于 2010-7-29 18:32 编辑 ]
----------------解决方案--------------------------------------------------------
for(int i=0;i<10000;i++){
if(i%10000==0 & i>0)//
晕
它不会打印吧
你这个是哪里来的东西
[ 本帖最后由 aufish 于 2010-7-29 20:27 编辑 ]
----------------解决方案--------------------------------------------------------
if(i%10000==0 & i>0)
%是取模的意思:也就是说取的是小数点之后的数字,只有当i=0时,i%10000==0条件成立,但i>0这个条件不成立
&是and的意思,也就是说两边条件同时为真时才会执行里面的代码
true & true == true;
true & false == false;
false & false == false;
这个条件一直都没有满足过。。。所以不会打印里面的代码
----------------解决方案--------------------------------------------------------
%代表余数,比如:7%2=1,1%2=1
所以for里面的if条件永远不成立,for里的打印语句也就永远执行不到
Thread main is over是由for循环后面的System.out.println("Thread main is over");打印的
----------------解决方案--------------------------------------------------------