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

时间:2015-09-28 18:30:31

标签: java cumulative-sum

我无法弄清楚为什么我的代码无效。首先,我是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时,它返回34582,而不是数字的累积和。任何人都可以解释为什么,以及我如何解决它,以便它返回序列的累计总数?

3 个答案:

答案 0 :(得分:0)

从while循环中删除break

答案 1 :(得分:0)

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

代码就像这样

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语句中,这样即使第一次运行后参数为真,它也只会循环一次,因为你会跳出循环。

答案 2 :(得分:0)

以下是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();
}

输入:

  

数字: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();
}

输入:

  

数字:1 7 2 9

输出:

  

1

     

8

     

10

     

19