For循环未执行;

时间:2019-03-08 00:16:42

标签: java for-loop

我的代码不适用于此方法,我试图将数字的总和相加;如果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 个答案:

答案 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

重写您的代码以使用此功能可能会解决此过程中的问题。