用户输入仅发生一次或在循环期间永不停止

时间:2013-02-08 03:47:24

标签: java while-loop do-while

我正在尝试一个读取未指定数量的整数的程序,找到sum,positive,negative和average。我的问题是,它只会运行并允许输入一个整数然后什么也不做,或者使用以下代码,它永远不会停止让你输入数字因此我无法过去。我的数字= 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
    }
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

以下代码片段应该为您提供如何从控制台读取整数的一个很好的示例:

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

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