我正在一个基于用户输入来修改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;
}
}