我正在开发一个程序,我需要一个数组生成算法,但是,即使代码应该有效,所有条目都完全相同,{{{ 1}}接近代码的末尾。
我已经检查了其余代码的每一部分,并且一切运行顺利,这只是一个算法,我似乎无法绕过我的脑袋。
System.out.println();
编辑:这是ZetaTestTriple构造函数:
public static ZetaTestTriple[] getTripleArray(int jRange, int kRange, int nRange, MathContext mc){
ZetaTestTriple[] r = new ZetaTestTriple[(8*(jRange+1)*(kRange)*nRange)];
int i=0;
for(int j=0;j<jRange+1;j++){
for(int k=1;k<kRange;k++){
for(int n=1;n<nRange+1;n++){
System.out.println("j="+j+"||k="+k+"||n="+n);
r[i+0]=new ZetaTestTriple(j,k,n,mc);
r[i+1]=new ZetaTestTriple(-j,k,n,mc);
r[i+2]=new ZetaTestTriple(-j,-k,n,mc);
r[i+3]=new ZetaTestTriple(-j,k,-n,mc);
r[i+4]=new ZetaTestTriple(j,-k,-n,mc);
r[i+5]=new ZetaTestTriple(j,k,-n,mc);
r[i+6]=new ZetaTestTriple(j,-k,n,mc);
r[i+7]=new ZetaTestTriple(-j,-k,-n,mc);
i+=8;
}
}
}
System.out.println("2013="+r[2013].toString());//(-10 * pi^-9)/-10
System.out.println("3172="+r[3172].toString());//(-10 * pi^-9)/-10
System.out.println("1283="+r[1283].toString());//(-10 * pi^-9)/-10
System.out.println("7412="+r[7412].toString());//(-10 * pi^-9)/-10
//They're all the same...
return r;
}
答案 0 :(得分:8)
问题是您的属性是静态。
private static BigDecimal j,n;
private static int k;
private static MathContext mc;
通过将它们声明为 static ,每次实例化类时都会覆盖它们。