Java - 整数输入的累加和在 while 循环中不起作用

Java - cumulative sum of integer input doesnt work in while loop

我无法弄清楚为什么我的代码不起作用。首先,我是 Java 的新手,请多多包涵。 任务是: 编写一个程序,读取一系列整数输入并打印累计总数。如果输入是 1 7 2 9,程序应该打印 1 8 10 19.

package lektion05forb;

    import java.util.Scanner;

/**
 *
 * @author Lars
 */
public class P52LoopsC 
{

/**
 * @param args the command line arguments
 */
public static void main(String[] args) 
{

    Scanner input = new Scanner(System.in);
    System.out.print("Numbers: ");
    double cumulative_sum = 0;
    String output_cumulative_sum= "";

    while (input.hasNextDouble())
    {
        double input_number = input.nextDouble();
        cumulative_sum += input_number;
        output_cumulative_sum += String.format("%s ", String.valueOf(cumulative_sum));
        break;
    }
    input.close();
    System.out.println(output_cumulative_sum);
}

}

当我输入像 3 4 5 8 2 这样的数字序列时,它 returns 是 34582,而不是数字的累加和。任何人都可以解释为什么,以及我如何解决它以便 returns 序列的累计总数?

从 while 循环中删除 break

你会想要使用do-while,因为这样,循环将至少执行一次,在你编写的代码中,循环永远不会执行,因为input.hasNextDouble() 为空,因为在初始化后还没有用户输入。(实际上,在扫描器的情况下循环确实执行,但通常被认为是一个糟糕的设计来执行 while-loop 没有隐式定义和初始化的控制变量。)

代码是这样的

do {
        double input_number = input.nextDouble();
        cumulative_sum += input_number;
        output_cumulative_sum += String.format("%s ", String.valueOf(cumulative_sum));

    }  while (input.hasNextDouble());

此外,永远不要将 break; 放在 while 语句中,这样即使第一个 运行 之后的参数为真,它也只会循环一次,因为你会跳出循环。

这是一个 double

的答案
public static void main(String[]args)
{
    Scanner input = new Scanner(System.in);
    System.out.print("Numbers: ");
    double cumulativeSum = 0;

    String line = input.nextLine();
    
    String[] numbers = line.split(" ");
    
    for(String number : numbers){
        cumulativeSum += Double.parseDouble(number);
        System.out.println(cumulativeSum);
    }
    
    input.close();
}

输入:

Numbers: 1 7 2 9

输出:

1.0

8.0

10.0

19.0

这是 Integer

的也许更好的解决方案
public static void main(String[]args)
{
    Scanner input = new Scanner(System.in);
    System.out.print("Numbers: ");
    Integer cumulativeSum = 0;

    String line = input.nextLine();
    
    String[] numbers = line.split(" ");
    
    for(String number : numbers){
        cumulativeSum += Integer.parseInt(number);
        System.out.println(cumulativeSum);
    }
    
    input.close();
}

输入:

Numbers: 1 7 2 9

输出:

1

8

10

19