2015-06-01 34 views
0

这里是我的问题:下面的代码是由我的主要应用程序创建一个线程中运行:的Android似乎并不总是执行我的功能

for (i = 0; i < nbiter; i++) 
{ 
call to Method_A() 
} 

Method_A()是:

for (j = 0; j < 256; j++) 
{ 
... 
call to Method_B() 
.. 
} 

Method_B正在使用BigInteger类进行6次乘法。

现在,当我运行的程序与nbiter设置为1时,我看到使用DDMS分析器,有256个调用method_B。 但是,当nbiter设置为2时,有时会有277个调用method_B,有时是330或333 ....但是没有512个调用。 任何人有一个想法? 谢谢。

这里是Method_A()的代码:

public Point Method_A(byte[] eac, Point PhiP, int cpt) 
    { 
     int j; 

     for (j = 0; j < 256; j++) 
     { 
      if (eac[j] == 0) 
       PQ = PhiP.ZADDU(this); 
      else 
       PQ = this.ZADDU(PhiP); 
      this.X = PQ[0]; 
      this.Y = PQ[1] ; 
      PhiP.X = PQ[2] ; 
      PhiP.Y = PQ[3] ; 
      this.Z = PQ[4] ; 
      PhiP.Z = PQ[4] ; 
      Log.d("MULT",cpt+":"+j); 
     } 
     this.X = PQ[0]; 
     this.Y = PQ[1] ; 
     PhiP.X = PQ[2] ; 
     PhiP.Y = PQ[3] ; 
     this.Z = PQ[4] ; 
     PhiP.Z = PQ[4] ; 
     return new Point(PQ[2],PQ[3],PQ[4],a,b,p); 
    } 

} 

我请Method_A()与计数器i作为第三个变量,并在logcat的窗口我有(与nbiter设置为2) 0:0 0:1 .. 0:255 1:0 1:1 .. 1:255

+1

张贴Method_A完整的代码下一次拿着一个非零值( )。什么是 ”...”? Method_A是否可能过早返回或者脱离循环? –

回答

0

我假设,因为你已经在代码就把我= 0不是int i = 0你已经发布for for循环,这是w你在项目中也有帽子。在这种情况下,'for'循环中的变量不会在循环中初始化,那么您在循环之后将它们设置为零?在这种情况下,'i'&'j'

如果你

for (int i = 0; i < nbiter; i++) 
{ 
call to Method_A() 
} 

那么至少你不用担心“I”的循环称为

+0

我不明白你的评论。主循环(变量i)运行一次,我从0到nbiter-1,变量i已在主类(int i)中声明。对于“i”的每个值,执行内循环,并且每次“j”以值0开始。 – Pascal

+0

不够公平。我会在方法A之前每次记录'i'的值,并在方法B之前记录'j'的值,然后您可以看到循环所经过的值。 – mrleeboze

+0

,正如你所看到的那样,在我调用method_A(,, i)并且输出为0:0 0:1时,在代码中输出值为j的对应于“i”的参数cpt的Log.d指令... 0:255 1:0 1:1 ... 1:255。所以这两个循环完全执行 – Pascal