import java.util.Scanner; import java.util.*; import java.io.*; public class ArregloUnidimensional { // Limpia la pantalla usando lineas en blanco public void limpiar() { for (int i = 0; i < 30; i++) System.out.println(""); } // Visualiza el menu public void visualizaMenu() { System.out.println("Menu"); System.out.println(""); System.out.println("1) Agregar"); System.out.println("2) Modificar"); System.out.println("3) Borrar"); System.out.println("4) Visualizar todos"); System.out.println("5) Guardar"); System.out.println("6) Leer"); System.out.println("0) Salir"); } // Arreglo unidimensional ... public void arregloUnidimensionalLong() { // Arreglo unidimensional long[]Arr; // Tamano arreglo unidimensional int Tam; // objeto para trabajar con teclado Scanner teclado = new Scanner(System.in); // Pregunta sobre el tamaño del arrglo do { System.out.println("Tamano del arreglo? "); Tam = teclado.nextInt(); if(Tam < 0 || Tam > 10) System.out.println("Error en el tamano, rango de 1 a 10"); } while(Tam < 0 || Tam > 10); Arr = new long[Tam]; int op = 1, act = 0; // Menu do { // limpiar(); visualizaMenu(); System.out.println(""); System.out.println("Opcion: "); op = teclado.nextInt(); switch(op) { // Salir case 0: break; // Adicionar case 1: do { System.out.println("Posicion? "); act = teclado.nextInt(); if(act < 0 || act >= Tam) System.out.println("Error en la posicion, rango de 0 a " + Tam); } while(act < 0 || act >= Tam); System.out.println("Valor? "); Arr[act] = teclado.nextInt(); break; // Modificar case 2: do { System.out.println("Posicion? "); act = teclado.nextInt(); if(act < 0 || act >= Tam) System.out.println("Error en la posicion, rango de 0 a " + Tam); } while(act < 0 || act >= Tam); System.out.println("Valor actual: " + Arr[act]); System.out.println("Nuevo valor: "); Arr[act] = teclado.nextInt(); break; // Borrar case 3: do { System.out.println("Posicion? "); act = teclado.nextInt(); if(act < 0 || act >= Tam) System.out.println("Error en la posicion, rango de 0 a " + Tam); } while(act < 0 || act >= Tam); Arr[act] = 0; break; // Visualizar case 4: for(act = 0; act < Tam; act++) System.out.println(act + "--> " + Arr[act]); break; // Guardar case 5: guardar(Arr); break; // Cargar info case 6: cargar(Arr); break; default: System.out.println("Opcion no reconocidad"); } } while(op != 0); System.out.println("Fin del arreglo unidimensional"); } // Guardar public void guardar(long [] Arr) { // Nuestro archivo donde guardaremos la informacion. FileWriter fichero = null; // Nuestro 'lapiz' que usaremos para escribir. PrintWriter pw = null; try { // Abrimos o creamos nuestro archivo. fichero = new FileWriter("./listaLong.txt"); pw = new PrintWriter(fichero); for(int i = 0; i < Arr.length; i++) { pw.println(Arr[i]); } } catch (Exception e) { e.printStackTrace(); } finally { try { // Nuevamente aprovechamos el finally para // asegurarnos que se cierra el fichero. if (null != fichero) fichero.close(); } catch (Exception e2) { e2.printStackTrace(); } } } // Leer public void cargar(long [] Arr) { File archivo = null; FileReader fr = null; BufferedReader br = null; try { // Apertura del fichero y creacion de BufferedReader para poder // hacer una lectura comoda (disponer del metodo readLine()). archivo = new File ("./listaLong.txt"); fr = new FileReader (archivo); br = new BufferedReader(fr); for(int i = 0; i < Arr.length; i++) { Arr[i] = Integer.parseInt(br.readLine()); } } catch(Exception e) { e.printStackTrace(); } finally { // En el finally cerramos el fichero, para asegurarnos // que se cierra tanto si todo va bien como si salta // una excepcion. try { if( null != fr ) { fr.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } // Arreglo unidimensional ... public void arregloUnidimensionalDatoAbstracto() { // Arreglo unidimensional Persona [] Arr; // Tamano arreglo unidimensional int Tam; // objeto para trabajar con teclado Scanner teclado = new Scanner(System.in); // Pregunta sobre el tamaño del arrglo do { System.out.println("Tamaño del arreglo? "); Tam = teclado.nextInt(); if(Tam <= 0 || Tam > 10) { System.out.println("Error en el tamaño, rango de 1 a 10"); } } while(Tam <= 0 || Tam > 10); Arr = new Persona[Tam]; int op = 1, act = 0; String nombre, apellido; int edad; // Menu do { // limpiar(); visualizaMenu(); System.out.println(""); System.out.println("Opcion: "); op = teclado.nextInt(); switch(op) { // Salir case 0: break; // Adicionar case 1: do { System.out.println("Posicion? "); act = teclado.nextInt(); if(act < 0 || act >= Tam) { System.out.println("Error en la posicion, rango de 0 a " + Tam); } } while(act < 0 || act >= Tam); System.out.println("Nombre(s)? "); teclado.skip("\n"); nombre = teclado.nextLine(); System.out.println("Apellidos? "); apellido = teclado.nextLine(); System.out.println("Edad? "); edad = teclado.nextInt(); Persona p = new Persona(nombre, apellido, edad); Arr[act] = p; break; // Modificar case 2: do { System.out.println("Posicion? "); act = teclado.nextInt(); if(act < 0 || act >= Tam) System.out.println("Error en la posicion, rango de 0 a " + Tam); } while(act < 0 || act >= Tam); System.out.println("Valor actual: " + Arr[act]); System.out.println("Nuevo valor: "); teclado.skip("\n"); //Arr[act] = teclado.nextLine(); break; // Borrar case 3: do { System.out.println("Posicion? "); act = teclado.nextInt(); if(act < 0 || act >= Tam) System.out.println("Error en la posicion, rango de 0 a " + Tam); } while(act < 0 || act >= Tam); Arr[act] = null; break; // Visualizar case 4: for(act = 0; act < Tam; act++) { System.out.print(act + "--> "); if(Arr[act] == null) { System.out.println("null"); } else { Arr[act].visualiza(); } } break; // Guardar case 5: guardar(Arr); break; // Cargar info case 6: cargar(Arr); break; default: System.out.println("Opcion no reconocida"); } } while(op != 0); System.out.println("Fin del arreglo unidimensional"); } // Guardar public void guardar(Persona [] Arr) { // Nuestro archivo donde guardaremos la informacion. FileWriter fichero = null; // Nuestro 'lapiz' que usaremos para escribir. PrintWriter pw = null; try { // Abrimos o creamos nuestro archivo. fichero = new FileWriter("./lista.txt"); pw = new PrintWriter(fichero); for(int i = 0; i < Arr.length; i++) { pw.println(Arr[i].getNombre()); pw.println(Arr[i].getApellidos()); pw.println(Arr[i].getEdad()); } } catch (Exception e) { e.printStackTrace(); } finally { try { // Nuevamente aprovechamos el finally para // asegurarnos que se cierra el fichero. if (null != fichero) fichero.close(); } catch (Exception e2) { e2.printStackTrace(); } } } // Leer public void cargar(Persona [] Arr) { File archivo = null; FileReader fr = null; BufferedReader br = null; try { // Apertura del fichero y creacion de BufferedReader para poder // hacer una lectura comoda (disponer del metodo readLine()). archivo = new File ("./lista.txt"); fr = new FileReader (archivo); br = new BufferedReader(fr); for(int i = 0; i < Arr.length; i++) { String nombre = br.readLine(); String apellido = br.readLine(); int edad = Integer.parseInt(br.readLine()); Persona p = new Persona(nombre, apellido, edad); Arr[i] = p; Arr[i].visualiza(); } } catch(Exception e) { e.printStackTrace(); } finally { // En el finally cerramos el fichero, para asegurarnos // que se cierra tanto si todo va bien como si salta // una excepcion. try { if( null != fr ) { fr.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } // Funcion Principal .... public static void main(String[] args) { ArregloUnidimensional t = new ArregloUnidimensional(); // Falta hacer un menu para saber a cual acceso o a todos // Primero entra al de Long t.arregloUnidimensionalLong(); // Despues al de dato abstracto (persona) t.arregloUnidimensionalDatoAbstracto(); } }