menu con errores

Iniciado por crisoof, 24 Agosto 2017, 21:40 PM

0 Miembros y 1 Visitante están viendo este tema.

crisoof

Estimados, muchas gracias de antemano los que se interesen en ayudar o tratar de ayudarme, les axplico:

Tengo este menu para ir pidiendo por teclado los datos al usuario, el menu avanza de forma automatica, luego en el ultimo casele pregunta al usuario si es que quiere ingresar un nuevo objeto o no, en cada caso a i le asigna un valor, cuando indicaba Y le asigna 0 para que al terminar sumara 1 mas y entrara nuevamente al case 1 y pregutara nuevamente los datos, el tema es que nunca entraba al case 1 empezaba desde el case 2, trate colocandole hasa un -1 al i aun asi siempre empezaba desde el case 2, bueno modificando esto ahora entro en un loop infinito, y no sale de la pregunta
Código (java) [Seleccionar]
System.out.println("¿Desea agregar un nuevo producto?, indicar \"Y\" para si o \"N\" para no: "); , si alguno me pudiera ayudar se los agradeceria mucho saludos
PD. tengo uno que otro system basura cuando estaba tratando de trazar donde estab el error
Código (java) [Seleccionar]
package javaproducto;
import java.util.*;
/**
*
* @author Crisoof
*/
public class Main {
   
    public static void main(String []arg){

        Producto Lechemala = new Producto();
        Producto LecheVacia = new Producto();
        Nodo<Producto> Indice = new Nodo(Lechemala);
        Nodo<Producto> NodoNext = new Nodo();
        ListaEnlazada<Producto> sistema = new ListaEnlazada<>();       
        Scanner leer = new Scanner(System.in);
        boolean flag = false ;
        boolean flag_in ;
        String codigo = null;
        String descrip = null;
        double precioUni = 0;
        int stock = 0;
        int stockCrit = 0;
        String opcion ;
               
        System.out.println("Estimad@ necesitamos agregar productos al sistema,favor ingresar la "
                + "informacion que se pedira a continuacion");           
        for(int i = 1;i <= 7;i++){           

            switch(i){                                       
                case 1:
                    flag = false;
                    while(!flag){
                    System.out.println("Ingrese el codigo del producto (Max. 10 caracteres): ");                               
                    codigo = leer.nextLine();                   
                        if(codigo.length() <= 10){
                            System.err.println("test codigo: "+codigo);
                            flag = true;
                        }else{
                    System.err.println("Error. Favor ingresar Maximo 10 caracteres: ");       
                            flag = false;
                        }
                    }                   
                    break;
                case 2:

                    System.out.println("Indicar descripcion del producto: ");
                    descrip = leer.nextLine();

                    break;
                case 3:
                   
                    flag_in = false;
                    while(!flag_in){
                        try{
                            System.out.println("Indicar precio unitario del producto: ");               
                            precioUni = leer.nextDouble();
                            flag_in = true;                                           
                        }catch(InputMismatchException ex){
                            System.err.println("Favor indicar solo numeros para el precio unitario del producto. ");                   
                            leer.nextLine();
                        }
                    }
                    break;
                case 4:
                   
                    flag_in = false;
                while(!flag_in){
                    try{
                        System.out.println("Indicar el stock del producto: ");               
                        stock = leer.nextInt();
                        flag_in = true;

                    }catch(InputMismatchException ex){
                        System.err.println("Favor indicar solo numeros enteros para el stock del producto. ");                   
                        leer.nextLine();
                    }
                }                       
                    break;
                case 5:
                    flag_in = false;
                while(!flag_in){
                    try{
                        System.out.println("Indicar el stock critico del producto: ");
                        stockCrit = leer.nextInt();
                        flag_in = true;
                       
                    Lechemala.setCodigo(codigo);
                    Lechemala.setDescripcion(descrip);
                    Lechemala.setPrecioUni(precioUni);
                    Lechemala.setStock(stock);
                    Lechemala.setStockCritico(stockCrit);
                   
                    sistema.insertarPrimero(Lechemala);
                    }catch(InputMismatchException e){
                        System.err.println("Favor indicar solo numeros enteros para el stock critico del producto. ");                   
                        leer.nextLine();
                    }
                }
                    break;
                case 6:
                    flag_in = false;
                    while(!flag_in){
                        try{

                            System.out.println("¿Desea agregar un nuevo producto?, indicar \"Y\" para si o \"N\" para no: ");                   
                                opcion = leer.next();
                                if (opcion.equals("Y") || opcion.equals("y")){
                                    System.out.println("entre a la opcion Y");
                                    flag_in = true;
                                    i = 0 ;
                                    System.out.println("i tiene este valor ahora"+i);

                                }else if (opcion.equals("N") || opcion.equals("n")){
                                    System.out.println("entre a la opcion N");
                                    flag_in = true ;
                                    i = 8;
                                    System.out.println("i tiene este valor ahora"+i);

                                }else
                            System.err.println("Favor ingresar solo \"Y\" para si o \"N\" para no. ");                           
                                flag_in = false;                       
                        }catch(InputMismatchException e){
                            System.err.println("Favor indicar solo Y o N (minusculas o mayusculas). ");                   
                            leer.next();
                        }
                    }
                    break;
            }   
        }

            for(int i =sistema.cuantosElementos();0<sistema.cuantosElementos();i--){
            System.out.println("Producto en posicion :"+i);   
            System.out.println(sistema.devolverDato(i).ToString());
            }
    }
       
}

HardC0d3

#1
Observa el bloque del try de la línea 104, en él tienes el fallo:

Código (java) [Seleccionar]

try{
     System.out.println("¿Desea agregar un nuevo producto?, indicar \"Y\" para si o \"N\" para no: ");                   
     opcion = leer.next();
     if (opcion.equals("Y") || opcion.equals("y")){
         System.out.println("entre a la opcion Y");
         flag_in = true;
         i = 0 ;
         System.out.println("i tiene este valor ahora"+i);

     }else if (opcion.equals("N") || opcion.equals("n")){
         System.out.println("entre a la opcion N");
         flag_in = true ;
         i = 8;
         System.out.println("i tiene este valor ahora"+i);

     }else
         System.err.println("Favor ingresar solo \"Y\" para si o \"N\" para no. ");                           
         flag_in = false;                       
     }catch(InputMismatchException e){
         System.err.println("Favor indicar solo Y o N (minusculas o mayusculas). ");                   
         leer.next();
}



Creo q te has dejado algo  ;)

crisoof

#2
Era una tontera!, gracias Hardcod3, me faltaban las llaves para el Else
saludos! ;-)