有没有一种方法可以在递增和递减时相加整数?按顺序

时间:2020-07-10 22:26:46

标签: java sequence increment decrement

我无法在序列中添加一组整数。我有三个变量:开始,数字和结束。 如果我“从5开始”,则将所有整数加至“数字”(例如9),然后从9减至整数“结束”(在本例中为-1):(5,9,-1 )=> 5 + 6 + 7 + 8 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 +-1,然后我将打印结果:总计=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);
  }
}

4 个答案:

答案 0 :(得分:2)

在第二个循环中,您在每次迭代中都覆盖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);

答案 1 :(得分: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);
    }
}

答案 2 :(得分:0)

您快到了。直到您的第二个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);

答案 3 :(得分:0)

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

!= 比较运算符用于比较两个值,结果始终是布尔类型