Java For循环不执行;
我的代码不适用于此方法,我正在尝试将数字之和相加;如果n=3,则返回10;n=6,返回56 这是我的代码: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.
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