Java For循环不执行;

Java For循环不执行;,java,for-loop,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.

我的代码不适用于此方法,我正在尝试将数字之和相加;如果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;
}
从运行此断言:

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!");
    }

您正在断言抛出断言错误的素数。如果您打算继续进行其余的测试,则需要捕获错误

示例代码:

        try {
            assertTrue(hm.isPrime(-37337));
        }
        catch (AssertionError e ) {
            e.printStackTrace();
        }
此外,如果您担心代码没有进入第二个循环,那么这是因为以下原因:

在第一个循环中,将n的值递减为0


然后在第二个循环中比较0是否小于0。

这不是对您的问题的直接回答,但您可以更直接地计算总和,并使用以下公式避免循环:

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

重新编写代码以使用此函数可能会解决此过程中的问题。

根据错误消息,
sumOfSums
实际上不会被调用,因为断言在上面一行失败。欢迎使用堆栈溢出。请正确缩进代码以便我们阅读。你的IDE可以为你做这件事。
f(n) = n(n+1)(n+2) / 6