Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 - Fatal编程技术网

Java 我想实现干式原理,但不要';我不知道怎么做

Java 我想实现干式原理,但不要';我不知道怎么做,java,Java,我在Java中有这个方法 public double[] pruebas(int dimension, String prueba) { random rd1 = new random(semilla, numSol); double mejorSolucion[] = new double[dimension]; switch (prueba) { case "schwefelUnimodal": for (int

我在Java中有这个方法

    public double[] pruebas(int dimension, String prueba) {
    random rd1 = new random(semilla, numSol); 
    double mejorSolucion[] = new double[dimension];


    switch (prueba) {
        case "schwefelUnimodal":
            for (int i = 0; i < numSol; i++) {
                for (int j = 0; j < dimension; j++) {
                    tresDimenciones[j] = schwefelUnimodal(numSol, rd1.nextInt());
                    if (tresDimenciones[j] < mejorSolucion[j]) {
                        mejorSolucion[j] = tresDimenciones[j];
                    }
                }
                System.out.println("///////////Corrida " + i);
                System.out.println("Primera:" + tresDimenciones[0] + "\nSegunda:" + tresDimenciones[1] + "\ntercera:" + tresDimenciones[2]);
            }
            break;
        case "schwefelMultimodal":
            for (int i = 0; i < numSol; i++) {
                for (int j = 0; j < dimension; j++) {
                    tresDimenciones[j] = schwefelMultimodal(numSol, rd1.nextInt());
                    if (tresDimenciones[j] < mejorSolucion[j]) {
                        mejorSolucion[j] = tresDimenciones[j];
                    }
                }
                System.out.println("///////////Corrida " + i);
                System.out.println("Primera:" + tresDimenciones[0] + "\nSegunda:" + tresDimenciones[1] + "\ntercera:" + tresDimenciones[2]);
            }
            break;
        case "rosenbrock":
            for (int i = 0; i < numSol; i++) {
                for (int j = 0; j < dimension; j++) {
                    tresDimenciones[j] = rosenbrock(numSol, rd1.nextInt(), rd1.nextInt());
                    if (tresDimenciones[j] < mejorSolucion[j]) {
                        mejorSolucion[j] = tresDimenciones[j];
                    }
                }
                System.out.println("///////////Corrida " + i);
                System.out.println("Primera:" + tresDimenciones[0] + "\nSegunda:" + tresDimenciones[1] + "\ntercera:" + tresDimenciones[2]);
            }
            break;

    }

    return mejorSolucion;
}
public double[]prueba(整数维,字符串prueba){
random rd1=新的random(semilla,numSol);
双MEJORUCION[]=新的双[维度];
开关(prueba){
案例“schwefelUnimodal”:
对于(int i=0;i
它调用其他方法,这里只显示了3个(schwefelUnimodal、schwefelmultimal和rosenbrock),但我必须使用另外6个,它们都使用相同的参数(都是int),并且必须执行相同的操作(2表示循环)。 我知道Java不会将方法作为参数传递


我在考虑接口(我不是很确定,我对接口了解不多),但我需要一些关于如何做的指导,或者我想知道是否还有其他选择。

当您寻找重复数据消除/枯竭的方法时,您应该寻找函数之间的共性

首先也是最重要的:接口在这里不会为您带来任何好处。您使用接口在所述接口的所有实现者之间强制执行特定契约;也就是说,无论您对
列表使用什么实现,它们都将具有
size()

现在,说到你的要点——你的switch语句中有非常非常常见的代码,除了不同的方法调用之外,这些代码似乎是重复的

真正的区别在于你提供的数组,但是你也有很多其他的东西作为常量状态引入。因此,您可以简单地创建一个方法来提取
tresDimenciones
数组中的差异

public void doOperation(int dimension, int numSol, double[] tresDimenciones, double[] mejorSolucion) {
    for (int i = 0; i < numSol; i++) {
        for (int j = 0; j < dimension; j++) {
            if (tresDimenciones[j] < mejorSolucion[j]) {
                mejorSolucion[j] = tresDimenciones[j];
            }
        }
        System.out.println("///////////Corrida " + i);
        System.out.println("Primera:" + tresDimenciones[0] + "\nSegunda:" + tresDimenciones[1] + "\ntercera:" + tresDimenciones[2]);
    }
}
public void doo操作(int维,int numSol,double[]树维度,double[]mejorSolucion){
对于(int i=0;i

将其集成到应用程序中是我留给读者的练习。

如果不需要返回值,可以使用
BiPredicate
将方法作为参数传递。这里有一些关于它和它的文档。如果你想要一个例子,我可以给你贴一个。哇!非常感谢。在我的谷歌搜索中,我从来没有发现BitFunction,我必须在谷歌搜索方面做得更好。我从来没有想过这一点。非常感谢你。我做了你建议我做的事。我还使用了双功能,因为它很酷。编辑:现在我知道我应该使用列表而不是数组(大多数时候)