0

我正在尝试一个程序,它读取未指定数量的整数,找到总和、正数、负数和平均值。我的问题是它要么只运行并允许输入一个整数然后什么都不做,要么使用下面的代码,它永远不会停止让你输入数字,因此我无法通过。我的 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
    }
}
4

2 回答 2

1

试试下面的代码。在执行的任何时候终止循环并查看输出类型 0 作为输入。

import java.util.Scanner;

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;
        int positive = 0;
        int negative = 0;
        int 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
                sum += numbers; // add integer input to sum
            }

            else if (numbers < 0) {
                negative++;// add 1 to negative count
                sum -= numbers; // add integer input to sum
            }

            numbers = input.nextInt();
            total++;

        } while (numbers != 0);

        System.out.println("The number of positives is \t " + positive);
        System.out.println("The number of negatives is \t " + negative);
        System.out.println("The total count of number is \t " + total);
        System.out.println("The sum of all number is    \t" + sum);
        System.out.println("The average is           \t"
                + ((double) sum / (positive + negative)));

    }// end main
}// end Compute
于 2013-02-08T04:01:58.277 回答
1

下面的代码片段应该给你一个关于如何从控制台读取整数的好例子:

Scanner scanner = new Scanner(System.in);
do {
  int i = scanner.nextInt();
  // ...
} while (scanner.hasNext());

方法调用将scanner.hasNext()阻塞,直到用户在控制台上输入下一个数字

于 2013-02-08T04:08:40.600 回答