1
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。有人可以告诉我出了什么问题吗?我已经把 i out.println 语句作为调试代码的一种方式。但是它们打印出想要的价值。

4

1 回答 1

10

这是因为您正在执行整数除法。例如,改变这个:

Xj/2147483563

...对此:

Xj/2147483563.0

对所有其他部门做同样的事情。请注意,在 Java 中,int/int将始终返回一个int. 要获得带小数的结果,两个操作数之一(或两者)必须是十进制数。

于 2013-09-03T16:56:56.667 回答