Menu switch java

2

I need this program to rerun the main menu, option 1 to choose the first option of switch , then I choose option 6 to get out of that case and allow me to choose another option of switch , but when I press another option it does not execute the switch again, this is the code. thanks

package exito;

import com.sun.glass.ui.SystemClipboard;
import java.util.Scanner;
import jdk.nashorn.internal.parser.TokenType;


public class EXITO {


    public static void main(String[] args) {

        Scanner teclado=new Scanner(System.in);

       int op1=0;
        int op2=0;
        double precio=0;

        System.out.println("Bienvenido a la tienda virtual supermercados Exito");
        System.out.println("seleccione una categoria de su interes.");



        do {

        System.out.println("1 - Lacteos");
        System.out.println("2 - Granos");
        System.out.println("3 - Verduras");
        System.out.println("4 - Frutas");
        System.out.println("5 - Jugueteria");
        System.out.println("6 - Ferreteria");
        System.out.println("7 - Fin de la compra y total");

        op1=Integer.parseInt(teclado.next());


        switch (op1){
            case 1:

                while (op2<=5) {
                    System.out.println("Lacteos");
                    System.out.println("1 - leche :$100");
                    System.out.println("2- yogurt :$200");
                    System.out.println("3 - alpinito :$300");
                    System.out.println("4 - queso :$400");
                    System.out.println("5 - bon yurt :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    } 
                }



                    //break;

            case 2:

                while (op2<=5) {
                    System.out.println("Granos");
                    System.out.println("1 - frijol :$100");
                    System.out.println("2- lenteja :$200");
                    System.out.println("3 - soja :$300");
                    System.out.println("4 - garbanzo :$400");
                    System.out.println("5 - arbeja :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }



                    //break;

            case 3:

                while (op2<=5) {
                    System.out.println("verduras");
                    System.out.println("1 - espinaca :$100");
                    System.out.println("2- coliflor :$200");
                    System.out.println("3 - zanahoria :$300");
                    System.out.println("4 - tomate :$400");
                    System.out.println("5 - cebolla :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }



                    //break;


            case 4:

                while (op2<=5) {
                    System.out.println("frutas");
                    System.out.println("1 - manzana :$100");
                    System.out.println("2- pera :$200");
                    System.out.println("3 - banano :$300");
                    System.out.println("4 - uvas :$400");
                    System.out.println("5 - durazno :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }



                    //break;


             case 5:

                while (op2<=5) {
                    System.out.println("Jugueteria");
                    System.out.println("1 - uno :$100");
                    System.out.println("2- monopolio :$200");
                    System.out.println("3 - ajedrez :$300");
                    System.out.println("4 - balon :$400");
                    System.out.println("5 - plastilina :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }



                    //break;
            case 6:

                while (op2<=5) {
                    System.out.println("Ferreteria");
                    System.out.println("1 - pala :$100");
                    System.out.println("2- martillo :$200");
                    System.out.println("3 - destornillador :$300");
                    System.out.println("4 - taladro :$400");
                    System.out.println("5 - alicate9 :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }



                    //break;        

            /*default:
                System.out.println("total: "+precio);*/

        }

        System.out.println("total: "+precio);


        } while (op1!=7);               


    }

}
    
asked by omar vasquez 18.05.2017 в 00:19
source

3 answers

1

It is essential that after each case the break; instruction is executed, this stops the execution of the switch , otherwise the following case will be executed.

switch (op1){
        case 1:

           break;
        case 2:

           break;
        case 3:

           break;
        case 4:

           break;
        ...
        ...
        ...
        default:

           break;
}

In order to perform the operations correctly, simply reset the value of op2 to 0, inside the do, the problem is that the same value of op2 is being maintained.

op1=Integer.parseInt(teclado.next());
 op2 = 0; //Agregar el reinicio de op2.

This would be the code:

public static void main(String[] args) {


        Scanner teclado=new Scanner(System.in);

       int op1=0;
        int op2=0;
        double precio=0;

        System.out.println("Bienvenido a la tienda virtual supermercados Exito");
        System.out.println("seleccione una categoria de su interes.");



        do {

        System.out.println("1 - Lacteos");
        System.out.println("2 - Granos");
        System.out.println("3 - Verduras");
        System.out.println("4 - Frutas");
        System.out.println("5 - Jugueteria");
        System.out.println("6 - Ferreteria");
        System.out.println("7 - Fin de la compra y total");

        op1=Integer.parseInt(teclado.next());
        op2 = 0; //Reinicia el valor de op2!.

        switch (op1){
            case 1:
                    while (op2<=5) {
                    System.out.println("Lacteos");
                    System.out.println("1 - leche :$100");
                    System.out.println("2- yogurt :$200");
                    System.out.println("3 - alpinito :$300");
                    System.out.println("4 - queso :$400");
                    System.out.println("5 - bon yurt :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    } 
                }
                   break;    
            case 2:

                while (op2<=5) {
                    System.out.println("Granos");
                    System.out.println("1 - frijol :$100");
                    System.out.println("2- lenteja :$200");
                    System.out.println("3 - soja :$300");
                    System.out.println("4 - garbanzo :$400");
                    System.out.println("5 - arbeja :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }
               break;

            case 3:

                while (op2<=5) {
                    System.out.println("verduras");
                    System.out.println("1 - espinaca :$100");
                    System.out.println("2- coliflor :$200");
                    System.out.println("3 - zanahoria :$300");
                    System.out.println("4 - tomate :$400");
                    System.out.println("5 - cebolla :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }
                break;

            case 4:

                while (op2<=5) {
                    System.out.println("frutas");
                    System.out.println("1 - manzana :$100");
                    System.out.println("2- pera :$200");
                    System.out.println("3 - banano :$300");
                    System.out.println("4 - uvas :$400");
                    System.out.println("5 - durazno :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }
                break;    

             case 5:

                while (op2<=5) {
                    System.out.println("Jugueteria");
                    System.out.println("1 - uno :$100");
                    System.out.println("2- monopolio :$200");
                    System.out.println("3 - ajedrez :$300");
                    System.out.println("4 - balon :$400");
                    System.out.println("5 - plastilina :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }

                break;
            case 6:

                while (op2<=5) {
                    System.out.println("Ferreteria");
                    System.out.println("1 - pala :$100");
                    System.out.println("2- martillo :$200");
                    System.out.println("3 - destornillador :$300");
                    System.out.println("4 - taladro :$400");
                    System.out.println("5 - alicate9 :$500");
                    System.out.println("6 - volver atras");

                    op2=Integer.parseInt(teclado.next());
                    if (op2==1) {
                        precio=precio+100;
                    }
                    else 
                        if (op2==2) {
                        precio=precio+200;
                    }
                        else 
                            if (op2==3) {
                        precio=precio+300;
                    }
                            else 
                                if (op2==4) {
                        precio=precio+400;
                    }
                                else 
                                    if (op2==5) {
                        precio=precio+500;
                    }

                }

                break;          
            default:
                System.out.println("suma actual: "+precio);

        }

        System.out.println("Total final: "+precio);    

        } while (op1!=7);               

}
    
answered by 18.05.2017 в 00:36
1

You must add break , otherwise all cases will be executed.

You can also use nextInt(); to read the number entered by the user.

The code should look like this:

package exito;

import com.sun.glass.ui.SystemClipboard; import java.util.Scanner; import jdk.nashorn.internal.parser.TokenType;

public class EXITO 
{
    public static void main(String[] args) {

        Scanner teclado=new Scanner(System.in);

        int op1=0;
        int op2=0;
        double precio=0;

        System.out.println("Bienvenido a la tienda virtual supermercados Exito");
        System.out.println("seleccione una categoria de su interes.");

        do {
            System.out.println("1 - Lacteos");
            System.out.println("2 - Granos");
            System.out.println("3 - Verduras");
            System.out.println("4 - Frutas");
            System.out.println("5 - Jugueteria");
            System.out.println("6 - Ferreteria");
            System.out.println("7 - Fin de la compra y total");

            op1=teclado.nextInt();
            op2 = 0;

            switch (op1){
                case 1:

                    while (op2<=5) {
                        System.out.println("Lacteos");
                        System.out.println("1 - leche :$100");
                        System.out.println("2 - yogurt :$200");
                        System.out.println("3 - alpinito :$300");
                        System.out.println("4 - queso :$400");
                        System.out.println("5 - bon yurt :$500");
                        System.out.println("6 - volver atras");

                        op2=teclado.nextInt();
                        if (op2==1) {
                            precio=precio+100;
                        }
                        else 
                            if (op2==2) {
                            precio=precio+200;
                        }
                            else 
                                if (op2==3) {
                            precio=precio+300;
                        }
                                else 
                                    if (op2==4) {
                            precio=precio+400;
                        }
                                    else 
                                        if (op2==5) {
                            precio=precio+500;
                        } 
                    }
                    break;

                case 2:

                    while (op2<=5) {
                        System.out.println("Granos");
                        System.out.println("1 - frijol :$100");
                        System.out.println("2 - lenteja :$200");
                        System.out.println("3 - soja :$300");
                        System.out.println("4 - garbanzo :$400");
                        System.out.println("5 - arbeja :$500");
                        System.out.println("6 - volver atras");

                        op2=teclado.nextInt();
                        if (op2==1) {
                            precio=precio+100;
                        }
                        else 
                            if (op2==2) {
                            precio=precio+200;
                        }
                            else 
                                if (op2==3) {
                            precio=precio+300;
                        }
                                else 
                                    if (op2==4) {
                            precio=precio+400;
                        }
                                    else 
                                        if (op2==5) {
                            precio=precio+500;
                        }

                    }
                    break;

                case 3:

                    while (op2<=5) {
                        System.out.println("verduras");
                        System.out.println("1 - espinaca :$100");
                        System.out.println("2 - coliflor :$200");
                        System.out.println("3 - zanahoria :$300");
                        System.out.println("4 - tomate :$400");
                        System.out.println("5 - cebolla :$500");
                        System.out.println("6 - volver atras");

                        op2=teclado.nextInt();
                        if (op2==1) {
                            precio=precio+100;
                        }
                        else 
                            if (op2==2) {
                            precio=precio+200;
                        }
                            else 
                                if (op2==3) {
                            precio=precio+300;
                        }
                                else 
                                    if (op2==4) {
                            precio=precio+400;
                        }
                                    else 
                                        if (op2==5) {
                            precio=precio+500;
                        }

                    }
                    break;


                case 4:

                    while (op2<=5) {
                        System.out.println("frutas");
                        System.out.println("1 - manzana :$100");
                        System.out.println("2 - pera :$200");
                        System.out.println("3 - banano :$300");
                        System.out.println("4 - uvas :$400");
                        System.out.println("5 - durazno :$500");
                        System.out.println("6 - volver atras");

                        op2=teclado.nextInt();
                        if (op2==1) {
                            precio=precio+100;
                        }
                        else 
                            if (op2==2) {
                            precio=precio+200;
                        }
                            else 
                                if (op2==3) {
                            precio=precio+300;
                        }
                                else 
                                    if (op2==4) {
                            precio=precio+400;
                        }
                                    else 
                                        if (op2==5) {
                            precio=precio+500;
                        }

                    }
                    break;


                 case 5:

                    while (op2<=5) {
                        System.out.println("Jugueteria");
                        System.out.println("1 - uno :$100");
                        System.out.println("2 - monopolio :$200");
                        System.out.println("3 - ajedrez :$300");
                        System.out.println("4 - balon :$400");
                        System.out.println("5 - plastilina :$500");
                        System.out.println("6 - volver atras");

                        op2=teclado.nextInt();
                        if (op2==1) {
                            precio=precio+100;
                        }
                        else 
                            if (op2==2) {
                            precio=precio+200;
                        }
                            else 
                                if (op2==3) {
                            precio=precio+300;
                        }
                                else 
                                    if (op2==4) {
                            precio=precio+400;
                        }
                                    else 
                                        if (op2==5) {
                            precio=precio+500;
                        }

                    }
                    break;

                case 6:

                    while (op2<=5) {
                        System.out.println("Ferreteria");
                        System.out.println("1 - pala :$100");
                        System.out.println("2 - martillo :$200");
                        System.out.println("3 - destornillador :$300");
                        System.out.println("4 - taladro :$400");
                        System.out.println("5 - alicate9 :$500");
                        System.out.println("6 - volver atras");

                        op2=teclado.nextInt();
                        if (op2==1) {
                            precio=precio+100;
                        }
                        else 
                            if (op2==2) {
                            precio=precio+200;
                        }
                            else 
                                if (op2==3) {
                            precio=precio+300;
                        }
                                else 
                                    if (op2==4) {
                            precio=precio+400;
                        }
                                    else 
                                        if (op2==5) {
                            precio=precio+500;
                        }

                    }
                    break;       

                /*default:
                    System.out.println("total: "+precio);*/

            }

            System.out.println("total: "+precio);

        } while (op1!=7);               
    }
}
    
answered by 18.05.2017 в 00:34
0

Here is the complete example of a menu I made, after making an option, go back to the menu. Make sure to use break after each case and default at the end of the switch to always have a default option.

You can see the full example of the java menu using switch

package SwitchEnJava;
import java.util.Scanner;
public class SwitchEnJavaMain {
    public static void main(String[] args) {
        System.out.println("Menu principal de operaciones matematicas usando SWITCH");
        int a = 0;
        int b = 0;
        Operaciones operacion = new Operaciones();
        Scanner entradaEscaner = new Scanner(System.in);
        String opcion = "";
        do {
            System.out.println("Dime tu operacion: SUMA, RESTA, MULTIPLICACION, DIVISION, SALIR");
            opcion = entradaEscaner.nextLine().toUpperCase();
            if (!"SALIR".equals(opcion)) {

                System.out.println("Dame el valor de A:");
                a = Integer.parseInt(entradaEscaner.nextLine());
                System.out.println("Dame el valor de B:");
                b = Integer.parseInt(entradaEscaner.nextLine());
                switch (opcion) {
                    case "SUMA":
                        System.out.println("SUMA = " + operacion.suma(a, b));
                        break;
                    case "RESTA":
                        System.out.println("RESTA = " + operacion.resta(a, b));
                        break;
                    case "MULTIPLICACION":
                        System.out.println("MULTIPLICACION = " + operacion.multiplicacion(a, b));
                        break;
                    case "DIVISION":
                        System.out.println("DIVISION = " + operacion.division(a, b));
                        break;
                    default:
                        System.out.println("Opcion desconocida, teclee otra");
                        break;
                }
            }
        } while (!"SALIR".equals(opcion));
    }
}
    
answered by 14.01.2019 в 00:52