在java中写文件arraylist

时间:2016-06-27 16:30:44

标签: java file arraylist

所以我正在为一个班级做一个java项目而且我坚持这个。我必须做一个模拟购物车的程序,主菜单有4个选项2用于购买不同的产品,1个用于将产品添加到购物车,最后一个用于将购物车保存在文本文件中。该程序现在正在编写文本文件。 (并且由于某些原因,当我进入选项2然后保存到数组中它写副本)修复,仍然没有写

package pack;
import java.util.*;
import java.io.*;
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int op=0,codigo,garantia,tipo=0;
        double precio;
        String nombre,fecha;
        Alimento ali=null;
        Electronicos ele=null;
        Changuito cmp = new Changuito();
        FileWriter archivo=null;

        Scanner obj =new Scanner(System.in);
        System.out.println("Ingrese Que desea hacer");
        System.out.println("=======================");
        System.out.println("1-Tomar Producto Alimento");
        System.out.println("2-Tomar Producto Electronico");;
        System.out.println("4-Grabar en Archivo");
        op=obj.nextInt();
        while (op!=0){

                switch (op){

                    case 1: 
                        ali=null;
                        System.out.println("Ingrece Precio: ");
                        precio=obj.nextDouble();
                        System.out.println("Ingrese Codigo");
                        codigo=obj.nextInt();
                        System.out.println("Ingrese Nombre");
                        nombre=obj.next();
                        System.out.println("Ingrese Fecha:");
                        fecha=obj.next();
                        ali = new Alimento(codigo,precio,nombre,fecha);
                        tipo=1;
                    break;
                    case 2:
                        ele=null;
                        System.out.println("Ingrece Precio: ");
                        precio=obj.nextDouble();
                        System.out.println("Ingrese Codigo");
                        codigo=obj.nextInt();
                        System.out.println("Ingrese Nombre");
                        nombre=obj.next();
                        System.out.println("Ingrese Garantia:");
                        garantia=obj.nextInt();
                        ele = new Electronicos(codigo,precio,nombre,garantia);
                        tipo=2;
                        break;
                    case 3:
                        if (tipo==1){
                            cmp.cargararray(ali);

                        }
                        if (tipo==2){
                            cmp.cargararray(ele);


                        }
                        break;
                    case 4:
                        Changuito c = new Changuito();
                        c.grabararchivo();
                        break;
                        default:
                        break;
                }

                System.out.println("Ingrese Que desea hacer");
                System.out.println("=======================");
                System.out.println("1-Tomar Producto Alimento");
                System.out.println("2-Tomar Producto Electronico");
                System.out.println("3-Agregar El ultimo Producto que Ingreso Al changuito");
                System.out.println("4-Grabar en Archivo");
                op=obj.nextInt();

        }
        cmp.mostrararray();

    }

}

我有一个购物车类:

package pack;
import java.io.*;
import java.util.*;

public class Changuito {
    FileWriter archivo=null;
    PrintWriter pw=null;
    private ArrayList <Productos> vec;

    public Changuito() {
        super();
        vec = new ArrayList<Productos>();
    }

    public ArrayList<Productos> getVec() {
        return vec;
    }

    public void setVec(ArrayList<Productos> vec) {
        this.vec = vec;
    }
    public void cargararray(Productos obj){
        vec.add(obj);
    }
    public void mostrararray(){
        for (Productos cmp:vec){
                System.out.println("Nombre: " +cmp.nombre);
                System.out.println("Codigo: " +cmp.codigo);
                System.out.println("Precio: " +cmp.precio);
                if (cmp instanceof Alimento){
                    System.out.println("Fecha: " +((Alimento) cmp).fecha);
                }
                if (cmp instanceof Electronicos){
                    System.out.println("Garantia: " +((Electronicos)cmp).garantia);
                }
            }
        }
    public void grabararchivo(){
        try{
            archivo = new FileWriter("D:\\archivo.txt");
            pw= new PrintWriter (archivo);
            for (Productos cmp:vec){
                pw.println(cmp.nombre);
                pw.println(cmp.codigo);
                pw.println(cmp.precio);
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        finally{
            try{
                if (archivo !=null)
                    archivo.close();
            }
            catch(Exception e2){
                e2.printStackTrace();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

你错过了休息时间;在你的第二和第三个案件结束时的陈述。

                case 2:
                    ele=null;
                    System.out.println("Ingrece Precio: ");
                    precio=obj.nextDouble();
                    System.out.println("Ingrese Codigo");
                    codigo=obj.nextInt();
                    System.out.println("Ingrese Nombre");
                    nombre=obj.next();
                    System.out.println("Ingrese Garantia:");
                    garantia=obj.nextInt();
                    ele = new Electronicos(codigo,precio,nombre,garantia);
                    tipo=2;
                    break; //missing this
                case 3: