Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的数组生成算法坏了_Java_Arrays_Algorithm - Fatal编程技术网

Java 我的数组生成算法坏了

Java 我的数组生成算法坏了,java,arrays,algorithm,Java,Arrays,Algorithm,我正在开发一个程序,为此我需要一个数组生成算法,然而,即使代码应该可以运行,所有的条目都是完全相同的,正如System.out.println()所示在代码末尾附近 我检查了其余代码的每一个部分,一切都很顺利,只是这一个算法,我似乎无法理解 public static ZetaTestTriple[] getTripleArray(int jRange, int kRange, int nRange, MathContext mc){ ZetaTestTriple[] r = new Z

我正在开发一个程序,为此我需要一个数组生成算法,然而,即使代码应该可以运行,所有的条目都是完全相同的,正如
System.out.println()所示在代码末尾附近

我检查了其余代码的每一个部分,一切都很顺利,只是这一个算法,我似乎无法理解

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;
}

问题是您的属性是静态的。

private static BigDecimal j,n;
private static int k;
private static MathContext mc;

通过将它们声明为静态,它们将在每次实例化类时被覆盖。

感谢您的帮助,现在看起来好多了。我们需要查看
ZetaTestTriple
构造函数的代码。您的算法应该如何工作?你用什么数据来测试它?什么是ZetateTree?为什么j、k变量对于所有ZetateTree都是静态的,最好不要使用与本地变量和类/实例变量相同的名称
private static BigDecimal j,n;
private static int k;
private static MathContext mc;