我无法弄清楚为什么我的代码无效。首先,我是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,而不是数字的累积和。任何人都可以解释为什么,以及我如何解决它,以便它返回序列的累计总数?
答案 0 :(得分:0)
从while循环中删除break
。
答案 1 :(得分:0)
你会想要使用do-while
,因为这样,循环将至少执行一次,在你编写的代码中,循环永远不会执行,因为(实际上,循环确实在扫描器的情况下执行,但通常被认为是一个糟糕的设计来执行while循环而没有隐式定义控制变量并初始化。)input.hasNextDouble()
是null,因为在初始化之后还没有来自用户的输入。
代码就像这样
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