Перевести C ++ функцию на Java

Прежде всего извините, если вопрос является основным, но я не эксперт C ++.

Я исследую Генетические Алгоритмы на Java, и я пришел по этой ссылке, которая содержит интересную информацию: http://web.archive.org/web/20100216182958/http://fog.neopages.org/helloworldgeneticalgorithms.php

Тем не менее, я не могу понять, что делает этот метод:

int fitness(bool* chromosome)
{
// the ingredients are:  0     1     2     3   4    5     6
//          salt sugar lemon egg water onion apple
return ( -chromosome[0] + chromosome[1] + chromosome[2]
-chromosome[3] + chromosome[4] - chromosome[5]
-chromosome[6] );
}

В академических целях я пытаюсь «перевести» программу C ++ на Java, но я не понимаю этот метод, что именно возвращает? (Я предполагаю, что он работает с массивом.)

0

Решение

Это возвращает целое число. Булевы значения преобразуются в целые числа, а затем добавляются / вычитаются вместе. Истина равна 1. Ложь равна 0.

Вот перевод на Java. В нашем случае мы должны сами преобразовать логические значения в целые.

int fitness(boolean[] chromosome)
{
int[] intChromosome = toInt(chromosome);

// the ingredients are:  0     1     2     3   4    5     6
//          salt sugar lemon egg water onion apple
return ( -intChromosome [0] + intChromosome [1] + intChromosome [2]
-intChromosome [3] + intChromosome [4] - intChromosome [5]
-intChromosome [6] );
}

int[] toInt(boolean[] values) {
int[] integers = new int[values.length];
for (int i = 0; i < values.length; i++) {
integers[i] = values[i] ? 1 : 0;
}
return integers;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]