java.util.NoSuchElementException:在循环内使用扫描器时,找不到行异常

时间:2019-04-28 15:05:54

标签: java exception

我需要在循环内进行输入,但遇到诸如NoSuchElementException之类的问题。不太确定这个问题。

要提供有关我的要求的一些信息,如果用户连续键入yes直到用户键入no,我必须执行一个功能。

代码:

    // Toppings
    while(true) {
      Scanner st = new Scanner(System.in);
      System.out.println("Do you need to add more toppings: (yes/no)");
      String decision = st.nextLine();

      if (decision.equals("yes")) {
        cake = toppingOption(cake);
      } else if (decision.equals("no")) {
        st.close();
        break;
      } else {
        System.out.println("Wrong input, type (yes/no)");
      }
    }

2 个答案:

答案 0 :(得分:0)

您关闭的扫描器不止一个,从而关闭了基础的InputStream,因此另一个Scanner无法再从相同的InputStream中读取,结果为NoSuchElementException

将st移出while循环

Scanner st = new Scanner(System.in);
// Toppings
    while(true) {

      System.out.println("Do you need to add more toppings:(yes/no)");
      String decision = st.nextLine();

      if(decision.equals("yes")) {
        cake = toppingOption(cake);
      } 
      else if(decision.equals("no")) {
        st.close();
        break;
      }
      else {
        System.out.println("Wrong input, type (yes/no)");
      }
    }

答案 1 :(得分:-1)

我的问题是不完整的,在toppingOptions函数内部,我有另一个扫描器对象被关闭,因此在删除扫描器对象后,请关闭这项工作。