Mostrar Mensajes

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - ibai

Pages: [1]
1
Java JSE / escribir productos en txt
« on: Marzo 13, 2018, 05:53:08 pm »
Buenos dias gente estoy teniendo un problema para escribir los productos que introduzco en la sesion de mi programa, espero que al menos me puedan dar alguna pista. Les explico, el programa se basa en un menu que me permite introducir productos en un array, estos productos tienen un codigo(int), un nombre y un peso(float). Despues de introducir los productos yo podria salir de la funcion introducirProd() para ejecutar visualizarProd(), y seguir introduciendo los productos que necesite. Hasta aqui el programa me funciona perfecto.

El problema me surge en la funcion guardarProd() que lo que haria es escribir estos productos, que yo acabo de introducir en la sesion, a un txt. Necesito que el int nProd, en la funcion guardarProd(), le indique al programa el numero de elementos que hay realmente en el array, porque sino solo me escribe el primero que yo introduje. Asi que la duda es en esta funcion: guardaProd();

He intentado todo lo que se me a ocurrido, si me pueden echar una mano lo agradeceria bastante.
Un cordial saludo y gracias ante todo.

Code: [Select]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.*;
import java.util.Scanner;



public class Main {
    static int num;       
    static Scanner sc = new Scanner(System.in);
    static Producto[] listProd= new Producto[100];
    static int nProd ;
        public static void main(String[] args) throws IOException {
           funcionSwitch();
        }   
        public static void funcionMenu(){
            do{
                System.out.println("Teclee la opción que desee." + "\n1-Introducir nuevo producto.\n2-Visualizar productos."
        + "\n3-Guardar en archivo de texto.\n4-Leer archivo de texto con productos guardados.\n5-Salir.");
                num= sc.nextInt();
            }while(num < 0 || num > 5);       
        }   
        public static void funcionSwitch() throws IOException{

            funcionMenu();

            do{
                switch(num){
                    case 1:

                       introducirProds();
                       funcionMenu();

                    break;                         
                    case 2:

                        visualizarProds();
                        funcionMenu();

                    break; 
                    case 3:
                        guardaProds();
                        funcionMenu();

                    break;
                    case 4:

                        leeProds();
                        funcionMenu();

                    break;                   
                }
            }while(num != 5);
        }     
   
   
        public static void introducirProds(){   

            int cierraWhile = 0;
                while(nProd<listProd.length && cierraWhile != 1){

                    Producto P = new Producto();

                    System.out.println("Introduzca las variables del nuevo producto.");
                    System.out.println("Código:");      P.setCodigo(sc.nextInt());
                    System.out.println("Nombre:");      P.setDescripcion(sc.next());
                    System.out.println("Peso:");        P.setPeso(sc.nextFloat());

                    System.out.println("¿Quiere dejar de introducir productos? teclee: 1 = si ,0 = no.");
                    cierraWhile = sc.nextInt();

                    listProd[nProd]= P ;           
                    nProd++;

                    if(nProd==listProd.length){
                        System.out.println("Almacenamiento lleno.");}
                }
        }    //Case 1
        public static void visualizarProds(){
            System.out.println("Productos introducidos en esta sesión: ");
                for(int i=0;i<nProd;i++)
                    System.out.println("Producto "+ listProd[i].getDescripcion() +"; con código: "
                        + listProd[i].getCodigo()+"; y peso: "+ listProd[i].getPeso()+" .");
        }   //Case 2   

        public static void guardaProds() throws IOException{
            System.out.println("Guardando los productos en: Productos.txt");
           
            File nombreFichero = new File("Productos.txt");
            FileWriter fw = new FileWriter(nombreFichero,true);       
            BufferedWriter bw = new BufferedWriter(fw);       
            PrintWriter pw = new PrintWriter(bw);
            nProd = listProd.length;
                for (int i = 0; i < nProd; i++) {                       
                       
                       
                        pw.println(listProd[i].getCodigo());
                        pw.println(listProd[i].getDescripcion());
                        pw.println(listProd[i].getPeso());
                       
                       
                            pw.close();
                    }
        }            //Case 3
        public static void leeProds(){
            System.out.println("Estoy dentro del case 4");
           
        }                                 //Case 4
   
}
Clase producto:

Code: [Select]
public class Producto {
    private int codigo;
    private String descripcion;
    private float peso;
   
   
    public Producto(int codigo, String descripcion, float peso) {
        this.codigo = codigo;
        this.descripcion = descripcion;
        this.peso = peso;
    }   
    public Producto(){
        this.codigo=0;
        this.descripcion="Desconocido";
        this.peso=0;
    }

    public int getCodigo() {
        return codigo;
    }
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getDescripcion() {
        return descripcion;
    }
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public float getPeso() {
        return peso;
    }
    public void setPeso(float peso) {
        this.peso = peso;
    }
   
}

Pages: [1]
ey