Исключение нулевого указателя при тестировании фитнеса по шкале - PullRequest
0 голосов
/ 20 января 2020

Создание алгоритма scaleFitnessTest, который проверяет пригодность значения двоичного кода и использует веса (простые числа) и перемещает их между левой и правой сторонами шкалы

логика c фактического соответствия масштаба работает, но при тестировании нулевых параметров я получаю исключение нулевого указателя

требования, которые я пытаюсь выполнить, таковы:

Метод должен возвращать -100 при следующем условия:

1) Если 'rep' или 'weights' имеет нулевой размер или если либо равно null.

2) Если размер 'rep' больше, чем число веса.

мой код следующий

public static double ScalesFitness(ArrayList<Boolean> rep, ArrayList<Double> weights)   {
        if( (rep.size() == 0 || weights.size() == 0) || (rep == null || weights == null) ) {
            return (-100);
        }
        if (rep.size() > weights.size()) {
            return(-100);
        }
        double lhs = 0.0,rhs = 0.0;
        int n = rep.size();
        for(int i=0;i<n;i++){
            if (rep.get(i) == true) {
                lhs = lhs + weights.get(i);

            }else {
                rhs = rhs + weights.get(i);

            }
        }


        return(Math.abs(lhs-rhs));
    }

1 Ответ

0 голосов
/ 20 января 2020

как упомянуто @jsheeran и @ D.Lawrence, чтобы проверить на ноль перед вызовом size() для них

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