有没有办法在递增时添加整数然后在递减时添加整数?按顺序

Is there a way to add integers while incrementing and then while decrementing? in a sequence

我无法在序列中添加一组整数。我有三个变量:开始、数字和结束。 如果我从 5“开始”,然后将所有整数加到“number”(例如 9),然后从 9 递减到整数“end”(在本例中为 -1): (5,9,-1 ) => 5+6+7+8+9+8+7+6+5+4+3+2+1+0+ - 1 ,然后我将打印结果:total = 70. 我怎样才能做到这一点?

public class SequenceNumbers {

  public static void main(String[] args) {

    int start = 5;
    int num = 9;
    int end = -1;
    
    int sum = 0;
    for(int i = start; i <= num; i++)
    {
        // sum = sum + i;
        sum += i;
    }

    int total = 0;
    for ( int n = num; n != end; n--) {
        
        total = (sum + (num - 1));
    }
    
   System.out.println("Result = " + total);
  }
}

在第二个循环中,您在每次迭代中覆盖 total。我会保持与第一个循环中相同的模式,并继续添加到 sum。请注意,它应该以 num - 1 开头,因此您不会计算该数字两次:

int sum = 0;
for(int i = start; i <= num; i++) {
    sum += i;
}

for ( int i = num - 1; i >= end; i--) {
    sum += i;
}

System.out.println("Result = " + sum);

你快到了。你的所有代码都很好,直到你的第二个 for 循环中的这一行:

total = (sum + (num - 1));

这一行说“设置 total 等于 sum 加上比 num 少一”。那里有问题; sumnum 永远不会被 for 循环改变,所以实际上你的 for 循环什么都不做。不过,您已经很好地设置了 for 循环,并且给自己设置了变量 n。您需要做的就是不断添加 sum,并且每次添加 n,如下所示:

sum += n;

然后在你的 println 中你可以使用 sum 而不是 total,像这样:

System.out.println("Result = " + sum);

在总结果的第二次迭代中,您应该从最大值 9 到最小值 -1 递减。这意味着大于或等于最低值。 ; >= ; -- .

!=比较运算符是比较两个值,结果总是布尔类型.

我猜你需要这个来练习? 但是如果你需要单线,这是一个可能的解决方案:

import java.util.*;
import java.util.stream.*;
public class MyClass {
    public static void main(String args[]) {
;
      int start = 5;
      int num = 9;
      int end = -1;
      
      int total = Stream.concat(Stream.iterate(start, n -> n + 1).limit(num-start+1), Stream.iterate(num-1, n -> n - 1).limit(num-end)).mapToInt(Integer::intValue).sum();

      System.out.println("Result = " + total);
    }
}