public int X1[]=new int[1001];
public int X2[]=new int[1001];
public int Xj;
public double R[]=new double[1001];
public double[] Generate(int seed1,int seed2)
{
X1[0]=seed1;
X2[0]=seed2;
for(int j=0;j<2;j++)
{
X1[j+1]=(40014*X1[j])%(2147483563);
X2[j+1]=(40629*X2[j])%2147483399;
System.out.println(X1[j+1]+" "+X2[j+1]);
Xj=Math.abs(X1[j+1]-X2[j+1]);
Xj=Xj%2147483562;
System.out.println(Xj+" "+j);
if(Xj>0)
{ R[j]=Xj/2147483563;}
else if(Xj==0)
{ R[j]=2147483562/2147483563;}
System.out.println(R[j]+" "+j);
}
在上面的代码中,当我尝试打印R []的元素时,它只是打印0.可能有人告诉我什么是错的?我把out.println语句作为一种调试代码的方式。但是他们打印所需的值。
答案 0 :(得分:10)
这是因为你正在执行整数除法。例如,更改此:
Xj/2147483563
......对此:
Xj/2147483563.0
对所有其他部门做同样的事情。请注意,在Java中,int/int
将始终返回int
。要获得带小数的结果,两个操作数之一(或两者)必须是十进制数。