NoSuchElementException-如何修复

时间:2018-12-08 05:14:45

标签: java

代码:

public void menuAdmin() throws IOException {

    Scanner input = new Scanner(System.in);
    Paciente paciente;
    int choice;

//  try {
        do {
            System.out.println("Ingrese una opcion:");
            System.out.println("1 - Buscar paciente por DNI");
            System.out.println("2- Crear nuevo paciente");
            System.out.println("3- Modificar un paciente");
            System.out.println("4- Eliminar paciente");
            System.out.println("5- Salir");
            choice = input.nextInt();     //HERE IS THE ISSUE
        } while (choice < 1 || choice > 5);

        switch (choice) {

        case 1:

            paciente = (Paciente) func.buscarPacienteDni();
            System.out.println();   
            if (paciente == null){
                menuAdmin();
            }else{
            menuX(paciente.getIdUser());
            }
            break;

        case 2:
            func.registrarse();
            menuAdmin();
            break;

        case 3:
            func.modifPaciente();
            break;

        case 4:
            func.elimPaciente();
            break;


        case 5: func.exit();
              }
//  } catch (Exception ex) {
    //  System.out.println(ex.getMessage());
//  }
    input.close();
}

输出

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at clases_basicas.Opciones.menuAdmin(Opciones.java:58)
at clases_basicas.Opciones.menuAdmin(Opciones.java:68)
at clases_basicas.Main.main(Main.java:29)

阅读一些有关此内容的文章,我了解发生了什么。 Switch正在使用可能为空的参数,因此我应该使用 input.hasNextInt()首先进行检查。我试图花一段时间检查一下,但一直循环播放。

如何防止用户选择无效的内容并检查nextInt()是否为空?

此外,我了解到input.close可能是问题所在,所以什么时候应该关闭扫描仪?在每种方法的结尾还是其他地方?

0 个答案:

没有答案