Java If语句

Java If语句,java,if-statement,Java,If Statement,我已经用Java编写了一些代码来测试两种解决方案的适用性 我希望然后比较这两种解决方案,并保留其中一个有最好的适应度,并放弃另一个 例如: if(fitness1 < fitness2) keep fitness1 and discard/ignore fitness2 else keep fitness2 and discard/ignore fitness1 if(fitness1

我已经用Java编写了一些代码来测试两种解决方案的适用性

我希望然后比较这两种解决方案,并保留其中一个有最好的适应度,并放弃另一个

例如:

if(fitness1 < fitness2)
    keep fitness1 and discard/ignore fitness2
else
    keep fitness2 and discard/ignore fitness1
if(fitness1
我将如何实现这一目标?最后,我希望能有一个最佳健身水平的列表(大小n)。我想我必须将每次迭代中的最佳适应度添加到某种类型的列表中?

best=(fitness1best = (fitness1 < fitness2) ? fitness1 : fitness2;

?:
三元运算符在这种决策过程中可能很有用。

引入另一个变量

键入
bestFitness

if(fitness1 < fitness2){
   bestFitness = fitness1;
}else{
   bestFitness = fitness2;
}
if(fitness1
然后丢弃两个
fitness1
fitness2


或者使用

我想说的是,创建一个
数组列表
来保存最佳值,并使用它:

arrayList.add((fitness1 < fitness2) ? fitness1 : fitness2);
arrayList.add((fitness1

这样,您将有一个最佳值列表。

假设适合度为int

int fitness1 = 5;
int fitness2 = 10;

int bestFit = bestFit(fitness1, fitness2);

//nothing needs to be done to explicitly discard fitness2.  Just keep using bestFit
//and let the GC worry about discarding stuff for you

public static int bestFit(int f1, int f2) { 

   return f1 > f2 ? f1 : f2

}

如果你的最终目标是列出“前n名健康水平”,你很可能会有一个名单,对吧

如果是这样,只需利用列表的功能:

// takes a list of Doubles, returns 'top' levels
public List<Double> getTopN(List<Double> allLevels, int top) {
    List<Double> sorted = new ArrayList<Double>(allLevels); // defensive copy
    Collections.sort(sorted, new Comparator<Double>() {
        @Override
        public int compare(Double left, Double right) {
            return left.compareTo(right); // assumes no null entries
        }
    });

    return sorted.subList(0, Math.min(sorted.size(), top));
}
//获取一个双精度列表,返回“顶级”级别
公共列表getTopN(列出所有级别,int-top){
已排序列表=新建ArrayList(所有级别);//复制
Collections.sort(已排序,新的Comparator(){
@凌驾
公共整数比较(左双,右双){
返回left.compareTo(right);//假定没有空条目
}
});
返回sorted.subList(0,Math.min(sorted.size(),top));
}

您能更具体一点吗?适合度是什么类型的变量(int、double等)?
fitness1
fitness2
都是双变量
discard
的意思是“忽略”-我只是想了解最佳的健康水平。这看起来像是一个非常基本的Java问题。你读过关于Java基本语法的教程吗,特别是声明和分配变量的教程?数字越大越好还是越小越好?您当前的比较表明,较低的健康分数比较高的分数好(当然,这很可能是事实)。什么样的数据是
fitness1
fitness2
?“放弃”是什么意思?Java具有自动垃圾收集功能,因此不需要做任何事情来丢弃对象;只是不要保留对它的引用。这是一种复杂且难以扩展的方式来重新创建
min
。希望我能+2这个,不要在Java中看到足够多的三元运算符:DSeems就像一种巴洛克式的编写
best=Math.min(fitness1,fitness2)
我有C/C++背景,
?:
是用Java提供的,特别适合像我这样的人。我喜欢它,而且我已经习惯了。:)当然,这两种方法都可以。虽然我在示例输出中没有看到任何重复的结果,但是您能说明您使用什么算法来检查可能的适应值吗?