Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ibai92

#1
Por favor sabrian decirme alguna pista para que nProd, en la funcion guardarProd(), le indique al programa el numero de elementos en la matriz  listProd[] ??

En la funcion introducirProd() es un contador que incrementa cada vez que se añade un producto en la sesion. Y nProd en la funcion visualizaProd() si se relaciona con introducirProd(), pero no en guardaProd()...

Tan solo una pistta, he probado muchas cosas ya y no quiero entregar el ejercicio despues de aver llegado hasta aqui sin tener todas las funciones.
Saludos y gracias
#2
Buenas no queria abrir un nuevo tema para una pregunta parecida. La verdad el codigo que subi esta bastante mal y nose en que forma modificarlo en el post para que se entienda.
Estoy teniendo un problema para escribir los productos en un archivo txt, solo escribe el primero que introduzco y no se si es porque me falta alguna variable por sacar de alguna funcion, o por que es mejor con otra funcion, pero .write() no me sirve.  Nose si el array tengo que ponerlo en la clase principal o en producto. Que nose si estoy escribiendo bien el codigo para acceder a lo que yo quiero desde cualquier funcion.

La funcion es guardaProd();

Código (java) [Seleccionar]

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 Producto p = new Producto();
    static int nProd = 0;
   
        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);
           
            listProd[nProd] = p;      //Antes no tenia esto y solo escribia el primer producto, con esto escribe: 0 , "desconocido" y 0.0.
           
                for (int nProd = 0; nProd < listProd.length; nProd++) {
                    pw.println(p.getCodigo());//Y al no estar p, estas lineas se escribirian pw.println(listProd.getCodigo()); para que el programa escriba...
                    pw.println(p.getDescripcion());                                                      //...al menos el primer producto introducido
                    pw.println(p.getPeso());
                   
                        pw.close();
                }
        }            //Case 3
        public static void leeProds(){
            System.out.println("Estoy dentro del case 4");
           
        }                                 //Case 4
   
}


clase producto

Código (java) [Seleccionar]

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

Un saludo y gracias
#3
No lo entiendo antes no me salia eso de modificar xD a uno mio me referia claro
Bueno muchas gracias solucionado.
#4
Quiero editar un codigo que no funcionaba, pero no encuentro donde poder editar el mensaje. No quiero llenar el post de codigo inservible, saludos
#5
Buenas encontre la horna del zapato, justo lo que me pedian hacer en un video de mi curso. Asique avanze bastante. Voy a poner el codigo como muestra de gratitud a la informacion que me facilitaron, seguramente la pondre en practica tambien en la aplicacion. Saludos  ;D

Aunque en realidad el bucle del menu no esta bien hecho y se repite constantemente, por eso no esta del todo terminado algun codigo, estoy en ello y la clase producto no la incluyo porque no tiene nada de especial solo los contructores, getter , setter.
Cuando lo tenga hecho y funcione correctamente lo colgare, editando para que se quede el final. Y por si le puede servir a alguien

Modificacion , bucle funcional:

Código (java) [Seleccionar]

package pruebalibreceac;
/**
*
* @author ibai
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;


public class Main {
   
    static int num;       
    static Scanner sc = new Scanner(System.in);
    static ArrayList<Producto> lproductos = new ArrayList<Producto>(); 
   
    public static void main(String [] args) throws IOException {
       
            do{                 
                System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
+ "\n4-Leer archivo.\n5-Salir.");
                num= sc.nextInt();
            }while(num < 0 || num > 5);
           
            do{
                switch(num){
                    case 1:                                       
                       
                        System.out.println("Ingrese el nombre y luego el peso del nuevo producto.");
                       
                            creaProducto();
                            if(guardaProducto()){
                                System.out.println("Fichero almacenado correctamente");
                            }
                            else{
                                System.out.println("Error guardando fichero");
                            }
                           
                        do{                           
                            System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
                            + "\n4-Leer archivo.\n5-Salir");
                            num= sc.nextInt();                           
                        }while(num<0 || num>5);
                       
                    break;                         
                    case 2:
                       
                        System.out.println("Estos son los productos existentes.");
                       
                        muestraContenido("C:\\Users\\ibai\\Documents\\NetBeansProjects\\Programa1\\pruebaLibre\\Productos.txt");
                       
                        do{     
                            System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
                            + "\n4-Leer archivo.\n5-Salir");
                            num= sc.nextInt();                         
                        }while(num<0 || num>5);
                       
                    break;
                    case 3:
                       
                        System.out.println("Guardando productos desde archivo externo.");
                       
                        do{   
                          System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
                            + "\n4-Leer archivo.\n5-Salir");
                            num= sc.nextInt();
                        }while(num<0 || num>5);
                       
                    break;
                    case 4:
                       
                        System.out.println("Visualizando productos desde archivo externo.");
                       
                        do{   
                            System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
                            + "\n4-Leer archivo.\n5-Salir");
                            num= sc.nextInt();
                        }while(num<0 || num>5);
                       
                    break;                   
                }
            }while(num != 5);       
    }
   
    private static void creaProducto(){                 //case 1
        Scanner sca = new Scanner(System.in);
       
        Producto p1 = new Producto(1,"Arroz", (float) 30.00);
        Producto p2 = new Producto(2,"Maíz", (float) 56.89);
        Producto p3 = new Producto();   
       
        p3.setDescripcion(sca.nextLine());
        p3.setPeso(sca.nextFloat());
       
                    //Añadir setter de p3 introducido por teclado
        lproductos.add(p1);
        lproductos.add(p2);
        lproductos.add(p3);   
       
        lproductos.add(new Producto());
    }
   
    private static boolean guardaProducto(){           //case 1
        boolean ok = false;
        try{
            String nombreFichero = "Productos.txt";
            BufferedWriter bw = new BufferedWriter(new FileWriter(nombreFichero));
            PrintWriter pw = new PrintWriter(bw);
           
            Iterator it = lproductos.iterator();
            while(it.hasNext()){
                Producto p = (Producto) it.next();
                pw.println(p.getCodigo());
                pw.println(p.getDescripcion());
                pw.println(p.getPeso());
            }
            pw.close();
            ok = true;
        }   
        catch(Exception e){
            System.out.println("Error: "+ e.getMessage());
        }
        return (ok);
    }
                                                            //case 2
    public static void muestraContenido(String archivo) throws FileNotFoundException, IOException {
        String nombreFichero;
        FileReader f = new FileReader(archivo);
        BufferedReader b = new BufferedReader(f);
        while((nombreFichero = b.readLine())!=null) {
            System.out.println(nombreFichero);
        }
        b.close();
    }
}
#6
Oye amigo gracias por pasarme ese codigo  :o , dejame echarle un vistazo. Y seguramente tendre bastantes dudas en su ejecucion, ya que veo algunas cosas que aun no he visto.
Saludos
#7
Valee muchas gracias Rub'n ,  no sabia la manera de poner el codigo sorry.

Entiendo seguire estudiando el Scanner, muchas gracias

El caso es que pretenden que haga el ejercicio sin haber dado muchas cosas de java,como Scanner. Pero me da igual voy a estudiar java y cuando tenga todos los conceptos lo hare como mejor crea.
Vuelvo a poner el codigo con el GeSHi, para verlo yo al menos
Saludos.

Código (java) [Seleccionar]
import java.util.Scanner;
/**
*
* @author ibai
*/
public class Main {
    static int num;       
    static Scanner sc = new Scanner(System.in);
   
   
    public static void main(String [] args) {
       
            do{                 
                System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
+ "\n4-Leer archivo.\n5-Salir");
                num= sc.nextInt();
            }while(num < 0 || num > 5);
           
            do{
                switch(num){
                    case 1:                       
                        System.out.println("Ingrese el nombre y el peso del nuevo producto");                           
                       
                        do{
                       
                           
                        }while(num<0 || num>5);
                    break;
               
                    case 2:
                        System.out.println("Estos son los productos existentes");
                       
                        do{
                           
                        }while(num<0 || num>5);
                    break;

                    case 3:
                        System.out.println("Guardando productos desde archivo externo");
                       
                        do{
                           
                        }while(num<0 || num>5);
                    break;

                    case 4:
                        System.out.println("Visualizando productos desde archivo externo");
                       
                        do{
                           
                        }while(num<0 || num>5);
                    break;

                   
                }

            }while(num != 5);       
    }   
}


Código (java) [Seleccionar]
public class Producto extends Main{
    private int codigo=numProds;
    private static int numProds;
    Producto(){
        numProds++;
    }
       
    private String descripcion;
        public String getDescripcion(String desc) {
        return descripcion=desc;
    }
        public void setDescripcion(String desc) {
        this.descripcion = desc;
    }
       
    private float peso;
    public float getPeso(float peso) {
        return peso;
    }
    public void setPeso(float peso) {
        this.peso = peso;
    }
       
}
#8
Buenas estoy empezando con java y tengo que resolver un problema. Pero es el primero que me han puesto y es demasiado dificil para ser la primera vez. Les voy a dejar el problema en cuestion, y el codigo que he llegado a escribir.
La duda que querria que me resolvieran es como hago para que al introducir datos desde el teclado, estos se guarden en determinados atributos. Cuando vean el enunciado lo entenderan.

A por cierto, agradeceria que si no saben como ayudarme al menos me pasaran algun enlace, o dijeran pues mira no lo se. No esta bien preguntar algo y que no te respondan cuando tienes prisa por seguir estudiando otras cosas.


Crea una aplicación en Java que permita almacenar la información de los productos de una empresa. La información que se desea almacenar de cada producto es: el código (entero), la descripción (texto) y el peso (valor real con parte decimal).
El programa ofrecerá cinco opciones: 1. Introducir los productos; 2. Visualizarlos en pantalla; 3. Guardar archivo de texto; 4. Leer archivo; y 5. Salir.

Realiza las siguientes acciones:

1. Crea la clase producto con las propiedades y el constructor que permita inicializar con todos los campos.

2. Crea un método o función que visualice el menú.

3. Crea un método o función por cada opción del menú (introducirProds(), visualizaProds(), guardaProds(), leeProds()).

4. Crea el programa principal que use los métodos anteriores.

El archivo de texto tendrá el siguiente formato:

Debes tener en cuenta los siguientes aspectos:

Supón que se dispone de los siguientes métodos (es decir, se pueden usar aunque no se implementen):

inputInt() // Devuelve un entero introducido por teclado Ej a =inputInt();

inputFloat() // Devuelve un float introducido por teclado Ej b =inputInt();

inputString() // Devuelve un String introducido por teclado Ej str =inputString();

output/outptln(String txt) // Equivalente a System.out.print/println()

Se ofrece la siguiente información para almacenar / leer el fichero:   //Yo use Scanner, al menos para el menu

BufferedWriter bw = new BufferedWriter(new FileWriter(nombreFichero, true));

PrintWriter pw = new PrintWriter(bw);

BufferedReader bw = new BufferedReader(new FileReader(nombreFichero, true));

PrintWriter pw = new PrintWriter(bw);

Para almacenar la información de los productos en memoria, se puede utilizar un array o un ListArray..

Lo que llevo hecho hasta ahora:

import java.util.Scanner;
/**
*
* @author ibai
*/
public class Main {
   static int num;        
   static Scanner sc = new Scanner(System.in);
   
   
   public static void main(String [] args) {
       
           do{                  
               System.out.println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto."
+ "\n4-Leer archivo.\n5-Salir");
               num= sc.nextInt();
           }while(num < 0 || num > 5);
           
           do{
               switch(num){
                   case 1:                        
                       System.out.println("Ingrese el nombre y el peso del nuevo producto");                            
                       
                       do{
                     
                           
                       }while(num<0 || num>5);
                   break;
               
                   case 2:
                       System.out.println("Estos son los productos existentes");
                       
                       do{
                           
                       }while(num<0 || num>5);
                   break;

                   case 3:
                       System.out.println("Guardando productos desde archivo externo");
                       
                       do{
                           
                       }while(num<0 || num>5);
                   break;

                   case 4:
                       System.out.println("Visualizando productos desde archivo externo");
                       
                       do{
                           
                       }while(num<0 || num>5);
                   break;

                   
               }

           }while(num != 5);      
   }    
}

-----------------------------------------------------------------------Producto

public class Producto extends Main{
   private int codigo=numProds;
   private static int numProds;
   Producto(){
       numProds++;
   }
       
   private String descripcion;
       public String getDescripcion(String desc) {
       return descripcion=desc;
   }
       public void setDescripcion(String desc) {
       this.descripcion = desc;
   }
       
   private float peso;
   public float getPeso(float peso) {
       return peso;
   }
   public void setPeso(float peso) {
       this.peso = peso;
   }
       
}