为什么我想要的时候while循环没有停止?

时间:2020-05-13 21:57:06

标签: java

public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int number = 1;
        int[] arrayNumber = new int[10];
        do {
            System.out.println("Please enter numbers (0 to stop) : ");
            for (int i = 0; i < arrayNumber.length; i++) {
                arrayNumber[i] = scanner.nextInt();
                if (arrayNumber[i] == 0) {
                    number = 0;
                }
            }

        } while (number != 0);

我正在尝试让用户输入数字(最多10个),并在用户输入0时停止。但是,输入0并不会停止。

3 个答案:

答案 0 :(得分:1)

这仅仅是因为您有一个内部for循环,您将数字设置为0,但是for循环仍未完成。这就是解决方法

这将在用户输入10个数字或输入0(以先到者为准)后完成执行

Scanner scanner = new Scanner(System.in);

int[] arrayNumber = new int[10];
int maxNums = 0;

while (maxNums < 10) {
    arrayNumber[maxNums] = scanner.nextInt();
    if (arrayNumber[maxNums] == 0) break;
    maxNums++;
}

这更短,更整洁,更易读

答案 1 :(得分:0)

public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int number = 1;
        int[] arrayNumber = new int[10];
        do {
            System.out.println("Please enter numbers (0 to stop) : ");
            for (int i = 0; i < arrayNumber.length; i++) {
                arrayNumber[i] = scanner.nextInt();
                if (arrayNumber[i] == 0) {
                    number = 0;
                    break;
                }
            }  while (number != 0);

答案 2 :(得分:0)

重点是,只有在 for循环的最后一次迭代中输入0时,您的代码才能正常运行。您可以明确地break循环,让while循环处理您的零值并停止循环。

    do {
        System.out.println("Please enter numbers (0 to stop) : ");
        for (int i = 0; i < arrayNumber.length; i++) {
            arrayNumber[i] = scanner.nextInt();
            if (arrayNumber[i] == 0) {
                number = 0;
                break;
            }
        }

    } while (number != 0);
相关问题