【问题标题】:Is there a way to add integers while incrementing and then while decrementing? in a sequence有没有办法在递增时添加整数,然后在递减时添加整数?按顺序
【发布时间】:2020-10-31 17:12:46
【问题描述】:

我无法在序列中添加一组整数。我有三个变量:开始、数字和结束。 如果我从 5“开始”,然后将所有整数添加到“数字”(例如 9),然后从 9 减少到整数“结束”(在本例中为 -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);
  }
}

【问题讨论】:

  • 第二个循环是添加常量num,而不是循环变量n。请参阅@Mureinik 的答案以稍微清理一下代码

标签: java sequence increment decrement


【解决方案1】:

在第二个循环中,您在每次迭代中覆盖 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 循环会覆盖 sum 值。但现在我明白了,我在哪里看到了我的错误。谢谢!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    sum += n;
    

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多