我正在为一个类做一个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: