Мой код не работает для этого метода, я пытаюсь сложить сумму суммы чисел; если 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!");
}
Добро пожаловать в Stack Overflow. Сделайте правильный отступ в коде, чтобы мы могли его прочитать. Ваша IDE может сделать это за вас.




Вы утверждаете на Prime, который выдал AssertionError. Если вы намерены продолжить оставшиеся тесты, вам нужно будет поймать ошибку.
Пример кода:
try {
assertTrue(hm.isPrime(-37337));
}
catch (AssertionError e ) {
e.printStackTrace();
}
Кроме того, если вы беспокоитесь о том, что ваш код не войдет во второй цикл, то это происходит из-за следующего:
В первом цикле вы уменьшаете значение n до 0.
И затем вы сравниваете, если 0 меньше 0 во втором цикле.
Не прямой ответ на ваш вопрос, но вы можете рассчитать сумму сумм более непосредственно и избежать циклов, используя формулу:
f(n) = n(n+1)(n+2) / 6
Переписав код для использования этой функции, вы, скорее всего, устраните проблему в процессе.
Согласно сообщению об ошибке,
sumOfSumsна самом деле не вызывается, потому что утверждение не выполняется одной строкой выше.