为了账号安全,请及时绑定邮箱和手机立即绑定

我如何摆脱这个用户说是的无限循环,然后回到第一个 while 循环,直到用户说不?

我如何摆脱这个用户说是的无限循环,然后回到第一个 while 循环,直到用户说不?

慕勒3428872 2023-03-09 13:57:57
我试图提示用户输入一个数字,然后询问他们是否要输入另一个数字。如果是,则他们重新启动第一个 while 循环,如果不是,则他们退出以打印他们选择的数字。但是似乎无论我做什么,我都无法摆脱第一个循环。它只是一遍又一遍地重复数字。我试着把 userInput = "y", break, and continue 放在 where valid= true; 的末尾 目前是,它们都产生相同的结果。陷入无限循环。ArrayList<Integer> inputs = new ArrayList<Integer>();System.out.println("Enter some numbers: ");   String userInput = "y";     boolean valid = false;    do {        while (scnr.hasNextInt()) {           inputs.add(scnr.nextInt());           System.out.println("Would you like to enter another?");           valid = true;           }           System.out.println(inputs);    } while (!userInput.equalsIgnoreCase("n"));
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

问题是你没有跳出内循环。在这里我将如何编写相同的代码:


import java.util.ArrayList;

import java.util.Scanner;


public class ReadNumbers {

  public static void main(String[] args) {

    ArrayList<Integer> inputs = new ArrayList<Integer>();

    System.out.println("Enter some numbers: ");

    try (Scanner scnr = new Scanner(System.in)) {

      do {

        inputs.add(scnr.nextInt());

        System.out.println("Would you like to enter another y/n?");

      } while (scnr.next().equalsIgnoreCase("y"));

    }

    System.out.println(inputs);

  }

}

这会产生以下输出:


Enter some numbers: 

14

Would you like to enter another y/n?

y

15

Would you like to enter another y/n?

y

17

Would you like to enter another y/n?

y

44

Would you like to enter another y/n?

n

[14, 15, 17, 44]

读取数字的另一种方法是从空格分隔的行中读取几个:


查看完整回答
反对 回复 2023-03-09
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我认为你把这个复杂化了。您只需要一个循环,该循环一直运行到用户输入“n”为止。


在此之前,要求用户输入一个数字,读入,然后询问他们是否要继续。适当地更新循环条件,你就完成了:


public static void main(String... args) {

    ArrayList<Integer> inputs = new ArrayList<Integer>();

    try (Scanner scnr = new Scanner(System.in)) {

        boolean valid = true;

        while (valid) {

            System.out.println("Enter some numbers: ");

            if (scnr.hasNextInt()) {

                inputs.add(scnr.nextInt());

            }

            System.out.println("Would you like to enter another?");

            String response = scnr.next();

            valid = response.trim().equalsIgnoreCase("y");

        }

    }

    System.out.println(inputs);

}

产生输出


Enter some numbers: 

1

Would you like to enter another?

y

Enter some numbers: 

2

Would you like to enter another?

y

Enter some numbers: 

3

Would you like to enter another?

n

[1, 2, 3]


查看完整回答
反对 回复 2023-03-09
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信