Java If Statement - PullRequest
       2

Java If Statement

3 голосов
/ 25 марта 2011

Я написал некоторый код на Java, который проверяет пригодность двух решений.

Я собираюсь сравнить два решения и сохранить одно, которое лучше всего подходит, и отказаться от другого.*

Например:

if(fitness1 < fitness2)
    keep fitness1 and discard/ignore fitness2
else
    keep fitness2 and discard/ignore fitness1

Как мне добиться этого?В конце концов, я надеюсь получить список (размер n) лучших фитнес-уровней.Я полагаю, что мне нужно будет добавить лучшую пригодность в каждой итерации к списку какого-либо типа?

Ответы [ 5 ]

6 голосов
/ 25 марта 2011
best = (fitness1 < fitness2) ? fitness1 : fitness2;

?: троичный оператор может быть полезен для такого рода процесса принятия решений.

3 голосов
/ 25 марта 2011

Я бы сказал, создайте ArrayList<Double>, чтобы сохранить лучшие значения, и используйте это:

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

Таким образом, у вас будет список лучших значений.

1 голос
/ 25 марта 2011

Если ваша конечная цель состоит в том, чтобы получить список «лучших n уровней физической подготовки», вы, вероятно, получите их список, верно?

Если это так, просто используйте возможности List:

// 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));
}
0 голосов
/ 25 марта 2011

Предполагая, что фитнес - это 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

}
0 голосов
/ 25 марта 2011

Введите другую переменную.

тип bestFitness

if(fitness1 < fitness2){
   bestFitness = fitness1;
}else{
   bestFitness = fitness2;
}

Затем отбросить оба fitness1, fitness2

Или используйте Math.min

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...