El archivo plano escribe porque se va guardando la informacion en el txt, pero no hace la lectura correctamente y esto hace que no pueda ver la cantidad de Prendas que al final pongo en un ciclo. En este caso estoy probando con Indumentaria.
public class Taller2 { public static void main(String[] args) throws IOException { ArrayList<Indumentaria> ind1 = new ArrayList<>(); ArrayList<Calzado> cal1 = new ArrayList<>(); ArrayList<Accesorio> acc1 = new ArrayList<>(); String cortarString[] = {"Camisetafresca", "XL","Air Max", "Hombre", "Nike", "Azul oscuro", "Poliester","96", "10990"}; ind1.add(new Indumentaria(cortarString[0], cortarString[1], cortarString[2], cortarString[3], cortarString[4], cortarString[5], cortarString[6], Integer.parseInt(cortarString[7]), Integer.parseInt(cortarString[8]))); ind1.add(new Indumentaria("loca", "dsad", "fdsaf", "gdfsg", "empanda","diomedes", "morcilla", (int) 45, (int) 4)); int op; String menu = "MENU"+"\n\n1. Crear nueva indumentaria. "+"\n4. Eliminar prenda."+"\n5. Modificar datos."+"\n6. Almacenar base de datos."+"\n7. Tamaños."+"\n0. Salir. "; do { op = Integer.parseInt(JOptionPane.showInputDialog(menu)); switch (op) { case 1: String tipoIndumentaria = JOptionPane.showInputDialog("Tipo indumentaria: "); String talla = JOptionPane.showInputDialog("Talla: "); String nombrePrenda = JOptionPane.showInputDialog("Nombre de la prenda"); String genero = JOptionPane.showInputDialog("Genero: "); String marca = JOptionPane.showInputDialog("Marca: "); String color = JOptionPane.showInputDialog("Color: "); String material = JOptionPane.showInputDialog("Material"); int stock = Integer.parseInt(JOptionPane.showInputDialog("Stock: ")); int precio = Integer.parseInt(JOptionPane.showInputDialog("Precio: ")); ind1.add(new Indumentaria(tipoIndumentaria, talla, nombrePrenda, genero, marca, color, material, (int) stock, (int) precio)); break; case 4: int op2; op2 = Integer.parseInt(JOptionPane.showInputDialog("1. "+"Indumentaria \n2. Calzado \n3. Accesorio \n")); switch (op2) { case 1: String eliminar; eliminar = JOptionPane.showInputDialog("Ingrese nombre de indumentaria a eliminar: "); for (int i = 0; i < ind1.size(); i++) { if (ind1.get(i).getNombrePrenda().equalsIgnoreCase(eliminar)) { ind1.remove(i); JOptionPane.showMessageDialog(null, "Se ha eliminado."); eliminar = ""; RA.escribirArchivo(ind1); } } if (!eliminar.equals("")) { JOptionPane.showMessageDialog(null, "No se ha encontrado la indumentaria."); } break; case 5: int op3; op3 = Integer.parseInt(JOptionPane.showInputDialog("1. "+"Indumentaria \n2. Calzado \n3. Accesorio \n")); switch (op3) { case 1: String modi; int modi2; modi = JOptionPane.showInputDialog("Ingrese nombre de indumentaria a modificar: "); for (int i = 0; i < ind1.size(); i++) { if (ind1.get(i).getNombrePrenda().equalsIgnoreCase(modi)) { modi2 = Integer.parseInt(JOptionPane.showInputDialog("Que desea modificar: \n"+"1. Tipo indumentaria"+"2. Talla"+"3. Nombre prenda"+"4. Genero"+"5. Marca"+"6. Color"+"7. Material"+"8. Stock"+"9. Precio"+"10. Nombre ciudad")); switch (modi2) { case 1: tipoIndumentaria = JOptionPane.showInputDialog("Tipo indumentaria: "); ind1.get(i).setTipoIndumentaria(tipoIndumentaria); break; case 2: talla = JOptionPane.showInputDialog("Talla: "); ind1.get(i).setTalla(talla); break; case 3: nombrePrenda = JOptionPane.showInputDialog("Nombre prenda: "); ind1.get(i).setNombrePrenda(nombrePrenda); break; case 4: genero = JOptionPane.showInputDialog("Genero: "); ind1.get(i).setGenero(genero); break; case 5: marca = JOptionPane.showInputDialog("Marca: "); ind1.get(i).setMarca(marca); break; case 6: color = JOptionPane.showInputDialog("Color: "); ind1.get(i).setColor(color); break; case 7: material = JOptionPane.showInputDialog("Material: "); ind1.get(i).setMaterial(material); break; case 8: stock = Integer.parseInt(JOptionPane.showInputDialog("Stock: ")); ind1.get(i).setStock(stock); break; case 9: precio = Integer.parseInt(JOptionPane.showInputDialog("Precio: ")); ind1.get(i).setPrecio(precio); break; } } } if (!modi.equals("")) { JOptionPane.showMessageDialog(null, "No se ha encontrado la prenda."); } break; default: JOptionPane.showMessageDialog(null, "Ingrese nombre de indumentaria valida"); break; case 7: JOptionPane.showMessageDialog(null, "Hay en total "+ ind1.size() +" indumentarias"); break; case 0: JOptionPane.showMessageDialog(null, "Guardando."); break; default: JOptionPane.showMessageDialog(null, "Ingrese opcion valida"); break; } //RA.crear(); RA.escribirArchivo(ind1); ind1 = RA.leerArchivo(); System.out.println(" ------------PRENDAS-------- "); for (int i = 0; i < ind1.size(); i++) { System.out.println("Tipo indumentaria.........: "+ ind1.get(i).getTipoIndumentaria()); System.out.println("Talla.........: "+ ind1.get(i).getTalla()); System.out.println("Nombre PRENDA.........: "+ ind1.get(i).getNombrePrenda()); System.out.println("Genero.........: "+ ind1.get(i).getGenero()); System.out.println("Marca.........: "+ ind1.get(i).getMarca()); System.out.println("Color.........: "+ ind1.get(i).getColor()); System.out.println("-------------------------------"); } System.out.println("HAY EN TOTAL: "+ ind1.size() +" PRENDAS"); } while (op != 0); }}
Adjunto ahora la clase donde escribo y leo el archivo
public class RA { public static void crear() throws IOException { //Este metodo no hace falta File f = new File("IndumentariasRA.txt"); if (!f.exists()) { f.createNewFile(); System.out.println(f.getName() +" Ha sido creado."); } System.out.println("Ruta: "+ f.getPath()); System.out.println("Ruta absoluta: "+ f.getAbsolutePath()); System.out.println("Ultima modificacion: "+ f.lastModified()); System.out.println("Tamaño: "+ f.length());}public static void escribirArchivo(ArrayList<Indumentaria> ind1) { try { File f = new File("IndumentariasRA.txt"); if (!f.exists()) { FileWriter fw = new FileWriter(f); PrintWriter pw = new PrintWriter(fw); for (int i = 0; i < ind1.size(); i++) { pw.println(ind1.get(i)); } pw.flush(); pw.close(); fw.close(); } else if (f.exists()) { FileWriter fw = new FileWriter(f, true); PrintWriter pw = new PrintWriter(fw); for (int i = 0; i < ind1.size(); i++) { pw.println(ind1.get(i)); } pw.flush(); pw.close(); fw.close(); } } catch (IOException ex) { System.out.println("Error de escritura en el"+" archivo plano indumentarias"); }}//Escribir Archivo Planopublic static ArrayList<Indumentaria> leerArchivo() { File f; FileReader fr; BufferedReader br; String linea; ArrayList<Indumentaria> ind1 = new ArrayList<>(); try { f = new File("IndumentariasRA.txt"); fr = new FileReader(f); br = new BufferedReader(fr); while (((linea = br.readLine()) != null)) { String cortarString[] = linea.split(","); Indumentaria indumentaria = new Indumentaria(cortarString[0], cortarString[1], cortarString[2], cortarString[3], cortarString[4], cortarString[5], cortarString[6], Integer.parseInt(cortarString[7]), Integer.parseInt(cortarString[8])); ind1.add(indumentaria); }//while br.close(); fr.close(); } catch (IOException ex) { System.out.println("No se pudo leer el "+"archivo plano indumentarias"); }//FIN LECTURA return ind1;}
Esta es la clase indumentaria
public class Indumentaria extends Prenda{ private String tipoIndumentaria; private String talla; public Indumentaria(String tipoIndumentaria, String talla, String nombrePrenda, String genero, String marca, String color, String material, int stock, int precio) { super(nombrePrenda, genero, marca, color, material, stock, precio); this.tipoIndumentaria = tipoIndumentaria; this.talla = talla; } public String getTipoIndumentaria() { return tipoIndumentaria; } public void setTipoIndumentaria(String tipoIndumentaria) { this.tipoIndumentaria = tipoIndumentaria; } public String getTalla() { return talla; } public void setTalla(String talla) { this.talla = talla; } @Override public int getCodigo() { return 98745; } @Override public String getReferencia() { return "IND98745"; } @Override public double obtenerValorDescuento() { return (getPrecio()*0.15); } @Override public double porcentajeDescuento() { return 15; } @Override public String toString() { return super.toString()+","+getTipoIndumentaria()+","+getCodigo()+","+getReferencia()+","+getTalla();//+","+obtenerValorDescuento()+","+porcentajeDescuento(); }}
Ahora la clase "Prenda" que es la superclase
public abstract class Prenda implements ITiendaRopa
{ private String nombrePrenda; private String genero; private String marca; private String color; private String material; private int stock; private int precio;
//private Ciudad ciudad;public Prenda(String nombrePrenda, String genero, String marca, String color, String material, int stock, int precio /*Ciudad ciudad*/) { this.nombrePrenda = nombrePrenda; this.genero = genero; this.marca = marca; this.color = color; this.material = material; this.stock = stock; this.precio = precio; //this.ciudad = ciudad;}public String getNombrePrenda() { return nombrePrenda;}public void setNombrePrenda(String nombrePrenda){ this.nombrePrenda = nombrePrenda;}public String getGenero(){ return genero;}public void setGenero(String genero){ this.genero = genero;}public String getMarca(){ return marca;}public void setMarca(String marca){ this.marca = marca;}public String getColor(){ return color;}public void setColor(String color){ this.color = color;}public String getMaterial() { return material;}public void setMaterial(String material){ this.material = material;}public int getStock(){ return stock;}public void setStock(int stock){ this.stock = stock;}public int getPrecio(){ return precio;}public void setPrecio(int precio) { this.precio = precio;}
// public Ciudad getCiudad() // {// return ciudad;// }//// public void setCiudad(Ciudad ciudad) // {// this.ciudad = ciudad;// }
@Overridepublic int getCodigo() { return 0;//No retorna nada porque de Prenda no se pueden crear objetos}@Overridepublic String getReferencia(){ return "";//No retorna nada porque de Prenda no se pueden crear objetos}public abstract double obtenerValorDescuento();public abstract double porcentajeDescuento();@Overridepublic String toString() { return getNombrePrenda()+","+getGenero()+","+getMarca()+","+getColor()+","+getMaterial()+","+getStock()+","+getPrecio();}
}
Aparece este error
run: Exception in thread "main" java.lang.NumberFormatException: For input string: "Camisetafresca" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at taller2.RA.leerArchivo(RA.java:70) at taller2.Taller2.main(Taller2.java:510) C:\Users\Juan Pablo Rivera\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (total time: 31 seconds)