Java If语句
我已经用Java编写了一些代码来测试两种解决方案的适用性 我希望然后比较这两种解决方案,并保留其中一个有最好的适应度,并放弃另一个 例如: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
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提供的,特别适合像我这样的人。我喜欢它,而且我已经习惯了。:)当然,这两种方法都可以。虽然我在示例输出中没有看到任何重复的结果,但是您能说明您使用什么算法来检查可能的适应值吗?