用java在文件上写数组列表



我正在为一个类做一个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();
    }
}

和我有一个cart类:

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();
            }
        }
    }
}

你错过了一个休息时间;语句在你的第二个和第三个case的末尾

                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:

相关内容

  • 没有找到相关文章

最新更新