【问题标题】:how do you find the sum of a sequence in Java你如何在Java中找到序列的总和
【发布时间】:2020-03-26 03:08:06
【问题描述】:

我真的不明白如何在 Java 中找到序列的总和。例如,程序将要求输入序列的第一个和最后一个数字,并将序列的和相加(3 + 4 + 5 = 12)。我的 System.out.println() 不能正常工作。这是为什么呢?

import java.util.Scanner;

public class SumOfASequenceTheSequel {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.println("First number?");
    int first = Integer.valueOf(scanner.nextLine());
    System.out.println("Second number?");
    int second = Integer.valueOf(scanner.nextLine());


    int sum = 0;

    int i = first;

    while (i <= second) {
        sum = sum + i;
        i = i++;
    }

    System.out.println("The sum is " + sum);  
  }
}

【问题讨论】:

标签: java sequence


【解决方案1】:

i = i++;这个说法不正确。因为您使用了增量发布。在此语句中,首先在递增值后将 i 的值分配给 i。但我的价值没有改变。然后这个while循环变成无限循环。所以你需要删除分配部分,只需要i++;。您也可以使用 pre incremental (++i;)。如果你使用pre incremental,那么i = ++i; 语句很好。但是不需要赋值。

如果你可以用 for 循环替换 while 循环,那么你就不会遇到这个问题。对于下面的循环解决方案。下面的代码sum += i;等于sum = sum + i

for (int i = first; i <= second; i++) {
            sum += i;
}

【讨论】:

  • 非常感谢您提供的简洁信息。
【解决方案2】:

i++;被称为后增量等于i = i + 1;所以你只需要i++;,而不是i = i++;

【讨论】:

    【解决方案3】:

    正如其他人指出的那样,由于您在同一条语句 (i = i++;) 中进行后增量和赋值,因此您的程序正在无限循环中运行。

    您可能希望将其更改为预增量分配 (i = ++i;),或者甚至更好的是普通的预增量或后增量 (i++;)。

    查看this链接以了解前置和后置增量运算符之间的区别。

    我会推荐一个for 循环而不是while 循环以获得更好的可读性。看下面的sn-p:

    for(int i = first; i <= second; i++) {
        sum = sum + i;
    }
    

    如果您喜欢Stream API 而不是传统的循环,您也可以通过以下方式打印总和:

    System.out.println("The sum is " + IntStream.rangeClosed(first, second).sum());

    附带说明,您可能希望在使用完 Scanner 资源后关闭它以避免资源泄漏,如下所示:scanner.close();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 2012-08-13
      相关资源
      最近更新 更多