将double,double转换为double []

时间:2020-10-29 19:41:21

标签: java

当我尝试运行代码时,出现此错误:
错误:类Assess中的方法getTest1无法应用于给定类型;
double fit = Assess.getTest1(sol1 [0],sol1 [1]); ^
必需:double []
发现:double,double
原因:实际和正式论点清单的长度不同
我找不到解决方法。任何帮助将不胜枚举。谢谢

double[] sol1={100,100};
        double fit = Assess.getTest1(sol1[0],sol1[1]);
        
        boolean successful = false;
        int a = 0; // a is to ensure we don't waste time if we keep getting shitty initial pops
        double goodFit = 0.001;
        while(!successful) { 
        System.out.println(a++);
            double[][] pop1 = initialPop1();
            double[][] bestPop1 = findBestPop(pop1, 100);
            
            double[][] modifiedPop1 = crossover1(bestPop1, 100);
            double[][] bestModPop1 = findBestPop(modifiedPop1, 25);
            
            double bestFit = 100; // temp stores best fitness of this pop
            for(int i = 0; i < bestModPop1.length; i++) {
                fit = Assess.getTest1(bestModPop1[i][0],bestModPop1[i][1]);
                if(a==2) { goodFit = 0.01; } else if (a==3) { goodFit = 0.1; }
                if(fit < goodFit && fit > 0) {
                    successful = true;
                    if(fit < bestFit) {
                        bestFit = fit;
                        sol1[0] = bestModPop1[i][0];
                        sol1[1] = bestModPop1[i][1];
                    }
                } 
            }

1 个答案:

答案 0 :(得分:0)

从错误消息中,我们可以推断出该方法是这样声明的:

static double getTest1(double[] x) { ...

您有3个选择:

  1. 传递您已经拥有的数组:

    double[] sol1={100,100};
    double fit = Assess.getTest1(sol1);
    
  2. 为这两个值创建一个临时数组:

    double fit = Assess.getTest1(new double[] { sol1[0], sol1[1] });
    
  3. 将方法更改为varargs:

    static double getTest1(double... x) { ...
    

    然后您可以像以前一样调用它:

    double fit = Assess.getTest1(sol1[0], sol1[1]);
    

如果您可以修改getTest1()方法,建议您选择选项#3。

相关问题