Для цикла не выполняется; - PullRequest
1 голос
/ 08 марта 2019

Мой код не работает для этого метода, я пытаюсь сложить сумму из суммы чисел; если n = 3, вернуть 10; n = 6, возврат 56;

это мой код:

public int sumOfSums(int n) {
    int[] numArray = new int[n];
    int totalSum = 0;
    int counter = 0;
    for (int i = 0; i < n ; i++){
        numArray[i] = n;
        n--;
        System.out.println(numArray[i]);
    }
    for (int j = 0; j < n; j++){
        totalSum += numArray[j];
        System.out.println("I am in for loop");
  if (j == n-1){
            j = 0;
            counter++;
        }
        if (counter == n){
            return totalSum;
        }

}
return totalSum;
}

Также общая сумма не назначается, это ошибка, которую я получаю:

----jGRASP exec: java -ea HazMath
-37337 is not prime
1
Exception in thread "main" java.lang.AssertionError
    at HazMath.main(HazMath.java:133)

 ----jGRASP wedge: exit code for process is 1.
 ----jGRASP: operation complete.

от запуска этого утверждения:

public static void main(String[] args){
    HazMath HM=new HazMath();
        assert !HM.isPrime(3);
        assert !HM.isPrime(-37337);
        assert HM.sumOfSums(1) == 1;
    assert HM.sumOfSums(3) == 10;
    assert HM.sumOfSums(6) == 56;
    assert HM.sumOfSums(25) == 2925;
    assert HM.sumOfSums(-5) == 0;
    System.out.println("All tests passed.  VICTORY!");
    }

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Не прямой ответ на ваш вопрос, но вы можете более точно рассчитать сумму сумм и избежать циклов, используя формулу:

f(n) = n(n+1)(n+2) / 6

Переписывание кода для использования этой функции, скорее всего, решит вашу проблему в процессе.

1 голос
/ 08 марта 2019

Вы утверждаете на Prime, который бросил AssertionError. Если вы собираетесь продолжить оставшиеся тесты, вам нужно поймать ошибку.

Пример кода:

        try {
            assertTrue(hm.isPrime(-37337));
        }
        catch (AssertionError e ) {
            e.printStackTrace();
        }

Кроме того, если вас беспокоит, что ваш код не входит во второй цикл, то это из-за следующего:

В первом цикле вы уменьшаете значение n до 0.

И затем вы сравниваете, если 0 меньше 0 во втором цикле.

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