这是我的问题:以下代码是从我的主应用程序创建的线程运行的:
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次调用方法_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);
}
}
我用Counter i作为第三个变量调用Method_A(),在logcat windows中调用(nbiter设置为2) 0:0 0:1 .. 0:255 1:0 1:1 .. 1:255
答案 0 :(得分:0)
我假设你已经在为for循环发布的代码中放了i = 0而不是int i = 0,这就是你在项目中也有的东西。在那种情况下'我'和你的for循环中的变量'j'没有在循环中初始化,所以你在循环后将它们设置为零吗?
如果你这样做
for (int i = 0; i < nbiter; i++)
{
call to Method_A()
}
那么至少你不必担心下次调用循环时'我'持有一个非零值