【发布时间】:2013-02-08 03:47:23
【问题描述】:
我正在尝试一个程序,它读取未指定数量的整数,找到总和、正数、负数和平均值。我的问题是它要么只运行并允许输入一个整数然后什么都不做,要么使用下面的代码,它永远不会停止让你输入数字,因此我无法通过。我的 number = 0 输出正确。
public class Compute {
// Count positive and negative numbers and compute the average of numbers
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int sum = 0;
positive = 0;
negative = 0;
total = 0;
System.out.println("Enter an integer, the input ends if it is 0: ");
int numbers = input.nextInt();
do {
if (numbers > 0) {
positive++;//add 1 to positive count
} else if (numbers < 0) {
negative++;//add 1 to negative count
}//end else if
sum += numbers; //add integer input to sum
numbers = input.nextInt();
total++;
} while (numbers != 0);
if (numbers == 0) {
System.out.println("No numbers are entered except " + numbers);
}//end if
}
}
【问题讨论】:
-
请更好地格式化您的代码。如果人们可以轻松阅读您的代码,您将获得更好的答案。
-
另外,考虑在每次调用 input.nextInt() 之前向用户输入输出提示。否则,你怎么知道是时候输入新的输入了?类似于:
System.out.print("Please enter the next number: ");后跟numbers = input.nextIne(); -
在再次调用
nextInt之前需要消耗行终止符。 -
@Perception:通常是这样,尤其是在将 Scanner 调用与
nextInt()和类似方法与nextLine()调用混合时,但如果 Scanner 只获得简单的标记,例如 int,那么我不'认为这是不必要的。 -
@HovercraftFullOfEels - 测试并确认。这主要是显示问题。
标签: java while-loop do-while