我的代码不适用于此方法,我试图将数字的总和相加;如果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!");
}
答案 0 :(得分:1)
您要在Prime上断言引发了AssertionError。如果您打算继续进行其余测试,则需要捕获错误。
示例代码:
$('.tblServices > tbody > tr.loc2 td.tcDayTimes').html("24 hours");
此外,如果您担心代码无法进入第二个循环,则是由于以下原因:
在第一个循环中,将n的值减为0。
然后在第二个循环中比较0是否小于0。
答案 1 :(得分:1)
不是您问题的直接答案,但是您可以使用以下公式更直接地计算总和并避免循环:
f(n) = n(n+1)(n+2) / 6
重写您的代码以使用此功能可能会解决此过程中的问题。