线程“主”中的异常java.util.NoSuchElementException:找不到行(扫描仪类传递给另一个扫描仪)

时间:2019-12-01 02:15:11

标签: java java.util.scanner

我正在一个基于用户输入来修改arralist的系统中工作,但是以某种方式,当我运行该程序时,扫描仪不要让我输入输入,而只是告诉我没有行发现有时它会打印下面的行(我是指其他扫描),就像它只是通过扫描一样。可能我是菜鸟犯错,但请帮忙。


Scanner scan1 = new Scanner(System.in);
                             System.out.println("Ponga el ID del alumno que desea modificar");
                             int respuestas1 = scan1.nextInt();
                             scan1.close();
                             for(Alumnos alum1 : list) {
                                 if(alum1.getid() == respuestas1) {

                                     Scanner scan3 = new Scanner(System.in);

                                     System.out.println("Ponga el nombre del estudiante");
                                     String respuestas3 = scan3.nextLine();
                                     alum1.setnombre(respuestas3);

                                     System.out.println("Ponga el apellido del estudiante");
                                     Scanner scan4 = new Scanner(System.in);
                                     String respuestas4 = scan4.nextLine();
                                     alum1.setapellido(respuestas4);

                                     scan4.close();

                                     System.out.println("Ponga la carrera del estudiante");
                                     Scanner scan5 = new Scanner(System.in);

                                     String respuestas5 = scan5.nextLine();
                                     alum1.setcarrera(respuestas5);

                                     scan5.close();

                                     System.out.println("Ponga el codigo del estudiante");
                                     Scanner scan6 = new Scanner(System.in);

                                     int respuestas6 = scan6.nextInt();
                                     alum1.setcodigo(respuestas6);

                                     scan6.close();

                                     System.out.println("Ponga la direccion del estudiante");
                                     Scanner scan7 = new Scanner(System.in);

                                     String respuestas7 = scan7.nextLine();
                                     alum1.setdireccion(respuestas7);

                                     scan7.close();

                                     System.out.println("Ponga la edad del estudiante");
                                     Scanner scan8 = new Scanner(System.in);

                                     int respuestas8 = scan8.nextInt();
                                     alum1.setedad(respuestas8);

                                     scan8.close();

                                     System.out.println("Ponga el GPA del estudiante");
                                     Scanner scan9 = new Scanner(System.in);

                                     int respuestas9 = scan9.nextInt();
                                     alum1.setGPA(respuestas9);

                                     scan9.close();

                                     System.out.println("Ponga la Facultad del estudiante");
                                     Scanner scan10 = new Scanner(System.in);

                                     String respuestas10 = scan10.nextLine();
                                     alum1.setFacultad(respuestas10);

                                     scan10.close();

                                     System.out.println("Ponga el numero de creditos del estudiante");
                                     Scanner scan11= new Scanner(System.in);

                                     int respuestas11 = scan11.nextInt();
                                     alum1.setnum_creditos(respuestas11);

                                     scan11.close();

                                     System.out.println("Ponga el telefono del estudiante");
                                     Scanner scan12 = new Scanner(System.in);

                                     int respuestas12 = scan12.nextInt();
                                     alum1.settelefono(respuestas12);

                                     scan12.close();

                                     alum1.setid(1);
                                     FileWriter pw = null; //iniciarlizar eso para porque sino no entra en scope para el finally
                                        Scanner scan_1 = new Scanner(System.in);
                                        System.out.println("Nombre del .txt");
                                        String c = scan_1.nextLine();
                                        scan_1.close();
                                        try {

                                            File file = new File(c);//Aqui se crea el file (se puede usar un Scan para poner un nombre X al archivo)

                                            if(!file.exists()) { //Crear el archivo si no existe, si no entonces solo se escribe en el 

                                                file.createNewFile();

                                                }
                                            pw = new FileWriter(file); //Metodos para escribir en archivo

                                            pw.write(alum1.getid()+alum1.getnombre() + alum1.getapellido() + alum1.getCarrera() + alum1.getCodigo() + alum1.getdireccion() + alum1.getedad() + alum1.getGPA() + alum1.getFacultad() + alum1.getNum_creditos() + alum1.gettelefono());

                                            System.out.println("Listo, guardado"); 
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }finally {
                                     try {
                                            pw.close();
                                            break;
                                        } catch (IOException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        } //si o si cerrar el archivo
                                 }
                                }break;
                             }

上面是主类的代码(这是Switch案例的一部分),下面是Alumnos类的代码。

import java.util.ArrayList;

public class Alumnos extends Persona {
    int GPA;
    int codigo;
    String Facultad;
    float num_creditos;
    String carrera;


public Alumnos() {
    super();
    this.GPA = 0;
    this.codigo = 0;
    this.Facultad = "";
    this.num_creditos = 0;
    this.carrera = "";

}
public Alumnos(int id, String nombre, String apellido, int edad, int telefono, String direccion, int GPA, int codigo, String Facultad, float num_creaditos, String carrera) {
    super(id, nombre, apellido, edad, telefono, direccion);
    this.GPA = GPA;
    this.codigo = codigo;
    this.Facultad = Facultad;
    this.num_creditos = num_creaditos;
    this.carrera = carrera;
}

public void setGPA(int GPA) {
    this.GPA = GPA;
}
public void setcodigo(int codigo) {
    this.codigo = codigo;
}
public void setFacultad(String Facultad) {
    this.Facultad = Facultad;
}
public void setnum_creditos(float num_creditos) {
    this.num_creditos = num_creditos;
}
public void setcarrera(String carrera) {
    this.carrera = carrera;
}
public int getGPA() {
    return this.GPA;
}
public String getFacultad() {
    return this.Facultad;
}
public int getCodigo() {
    return this.codigo;
}
public float getNum_creditos() {
    return this.num_creditos;
}
public String getCarrera() {
    return this.carrera;
}
public void Info(ArrayList<Alumnos> list) {
    for(int i = 0; i<list.size(); i++) {

        System.out.println("Alumno:" + list.get(i).getid() + "\n Nombre:" + list.get(i).getnombre() + "\n Apellido:" +list.get(i).getapellido() + "\nTelefono:" + list.get(i).gettelefono() + "\nEdad:"+ list.get(i).getedad()+"\nFacultad:" + list.get(i).getFacultad() + "\nGPA:" + list.get(i).getGPA() + "\nNumero creditos:"
                + list.get(i).getNum_creditos() + "\n Codigo:"  + list.get(i).getCodigo() + "\nCarrera:" + list.get(i).getCarrera());

    }


}
}

Alumnos类从Persona扩展到下面的抽象类。

public abstract class Persona {
    int id;
    String nombre;
    String apellido;
    int edad;
    int telefono;
    String direccion;


public Persona() {
    this.id = 0;
    this.nombre = "";
    this.apellido = "";
    this.edad = 0;
    this.telefono = 0;
    this.direccion = "";

}
public Persona(int id, String nombre, String apellido, int edad, int telefono, String direccion) {
    this.id = id;
    this.nombre = nombre;
    this.apellido = apellido;
    this.edad = edad;
    this.telefono = telefono;
    this.direccion = direccion;
}
public int getid() {
    return this.id;
}
public String getnombre() {
    return this.nombre;
}public String getapellido() {
    return this.apellido;
}public int getedad() {
    return this.edad;
}public int gettelefono() {
    return this.telefono;
}
public String getdireccion() {
    return this.direccion;
}
public void setid(int id) {
    this.id = id;
}
public void setnombre(String nombre ) {
    this.nombre = nombre;
}
public void setapellido(String apellido) {
    this.apellido = apellido;
}
public void setedad(int edad) {
    this.edad = edad;
}
public void settelefono(int telefono) {
    this.telefono = telefono;
}
public void setdireccion(String direccion) {
    this.direccion = direccion;
}


}

0 个答案:

没有答案