如何找到Java中序列的总和

问题描述 投票:0回答:3

我真的不明白如何在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
3个回答
0
投票

i ++;称为Post Increment等于i = i + 1;,因此您只需要i++;,而不是i = i++;


0
投票

正如其他人所指出的,因为您正在同一语句(i = i++;)中进行后递增和赋值,所以您的程序正在无限循环中运行。

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

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

为了更好的可读性,我建议使用for循环而不是while循环。请参见以下代码段:

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


0
投票

i = i++;此语句不正确。因为您使用了后增量]。在此语句中,首先在增量值之后将i的值分配给i。但我的价值不变。然后,此while循环变为无限循环。因此,您需要删除分配部分,只需要i++;。您也可以使用增量前++i;)。如果使用预增量,则i = ++i;语句可以。但是不需要赋值。

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

for (int i = first; i <= second; i++) {
            sum += i;
}
© www.soinside.com 2019 - 2024. All rights reserved.