当前位置: 代码迷 >> Java相关 >> 程序里一句i%10000把我弄蒙了,不会了
  详细解决方案

程序里一句i%10000把我弄蒙了,不会了

热度:31   发布时间:2010-07-29 18:30:23.0
程序里一句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");打印的

----------------解决方案--------------------------------------------------------
  相关解决方案