Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ArmandoQuintero en 6 Abril 2012, 08:59 am



Título: REGRESAR A MENU ANTERIOR CASE EN JAVA
Publicado por: ArmandoQuintero en 6 Abril 2012, 08:59 am
Buen dia... amigos

Tengo una duda, y creo q alguno si no es que muchos tendran una idea sobre como resolver mi duda... y de antemano gracias.

Estoy haciendo un proyecto de vacaciones que me han dejado en el Tecnologico, el problema que se me ha presentado en mi programa, es que al entrar a una opcion me manda al submenu y al regresar, regresa bien, pero al momento de entrar a el submenu de el menu 2, lo hace bien, al momento de regresar al menu 2 regresa bien, pero al querer regresar de el menu 2 al menu 1, ya no puedo y solo me quedo estancado en el menu 2....
No se si hayan entendido mi problema.

de igual forma aqui les dejo el codigo

Código:
import java.io.*;
import java.util.*;


public class proba
{

public static void main (String[]args)throws IOException
{



BufferedReader leer=new BufferedReader (new InputStreamReader (System.in));
Scanner input=new Scanner(System.in);
int menu0001=0,menu0002=0;
int menuprincipal=0;
int regresamenuprincipal=0;
int regresamenu0001=0;



int control [];
control = new int [5];     
        String []alumno=new String [5];
        String []carrera=new String [5];
        int x;



do{
if (regresamenuprincipal==0);

       

System.out.println ("[1] ALTAS");
System.out.println ("[2] BAJAS");
System.out.println ("[3] CAMBIOS");
System.out.println ("[4] SALIR");


do{


System.out.print ("INTRODUZCA EL N° DE LA OPCION: ");
menuprincipal = Integer.parseInt(leer.readLine());


if ((menuprincipal>4)||(menuprincipal<1))
{
System.out.println ("NO EXISTE LA OPCION SELECCIONADA");
}

}while ((menuprincipal>4)||(menuprincipal<1));


System.out.println ("");


//INICIA MENU PRINCIPAL
switch (menuprincipal)
{

case 1:
   //INICIA MENU DE ALTAS
   do{
if(regresamenu0001==1)
System.out.println ("°°°°°°°°°°°°°°°°°");
System.out.println ("ENTRO A ALTAS");
System.out.println ("");

System.out.println ("------------------");
System.out.println ("[1] ALUMNOS");
System.out.println ("[2] CALIFICACIONES");
System.out.println ("[3] ACTIVIDAD");
System.out.println ("[4] REGRESAR");
System.out.println ("°°°°°°°°°°°°°°°°°");


System.out.print ("INTRODUZCA EL N° DE LA OPCION: ");
        menu0001 = Integer.parseInt(leer.readLine());


switch (menu0001)
{
case 1:
int seleccion=0;
System.out.println("[1] AGREGAR ALUMNOS");
System.out.println("[0] REGRESAR");
System.out.println("");
System.out.print ("INTRODUZCA EL N° DE LA OPCION: ");
                seleccion = Integer.parseInt(leer.readLine());
                //INICIA SWITCH CREADO PARA AGREGAR ALUMNOS O REGRESAR
               
                switch (seleccion)
                {
                //INICIA CASE PARA EL PRIMER ALUMNO
                  case 1:
                  if ((control[0]>0)&&(control[1]>0)&&(control[2]>0)&&(control[3]>0)&&(control[4]>0))
                  {
                  int sitodolleno=0;
                  System.out.println("///////////////////////////////////////////");
                  System.out.println("LO SENTIMOS PERO TODOS LOS CAMPOS ESTAN OCUPADOS");
                  System.out.println("///////////////////////////////////////////");
                  System.out.print ("Introduce [0] para regresar: ");
                            sitodolleno = Integer.parseInt(leer.readLine());
                           
                            switch (sitodolleno)
                            {
                            case 0:
                                regresamenu0001=1;
                                break;
                            }
                            break;
                  }
                 
                 
                 
                                                     
                  if (control[0]>0)
{
System.out.println("//////////////////////////////////");
System.out.println("La PRIMER casilla esta llena.");
System.out.println("¿desea mirar mas adelante?");
System.out.println("//////////////////////////////////");
}else
{
for (x=0; x<1; x++)
  {
  System.out.print ("Ingrese el alumno "+(x+1)+": ");
  alumno[x]= leer.readLine();
  System.out.print ("Ingrese la carrera que cursa: ");
carrera [x] = leer.readLine();
System.out.print ("Ingrese su N° de Control: ");
control [x] = Integer.parseInt(leer.readLine());
  }
}
//FINALIZA CASE DE EL PRIMER ALUMNO

//INICIA SEGUNDO ALUMNO
int segundoalumno=0;
  System.out.println("[1] SI");
  System.out.println("[0] NO");
  System.out.println("Desea introducir otro alumno?: ");
  segundoalumno=Integer.parseInt(leer.readLine());
 
  switch (segundoalumno)
  {
  case 1:
 
if (control[1]>0)
{
System.out.println("//////////////////////////////////");
System.out.println("La SEGUNDA casilla esta llena.");
System.out.println("¿desea mirar mas adelante?");
System.out.println("//////////////////////////////////");
}else
{
for (x=1; x<2; x++)
  {
  System.out.print ("Ingrese el alumno "+(x+1)+": ");
  alumno[x]= leer.readLine();
  System.out.print ("Ingrese la carrera que cursa: ");
carrera [x] = leer.readLine();
System.out.print ("Ingrese su N° de Control: ");
control [x] = Integer.parseInt(leer.readLine());
  }
}
//FINALIZA SEGUNDO ALUMNO
 
//INICIA TERCER ALUMNO
  int terceralumno=0;
  System.out.println("[1] SI");
  System.out.println("[0] NO");
  System.out.println("Desea introducir otro alumno?: ");
  terceralumno=Integer.parseInt(leer.readLine());
 
  switch (terceralumno)
  {
  case 1:
 
  if (control[2]>0)
{
System.out.println("//////////////////////////////////");
System.out.println("La TERCERA casilla esta llena.");
System.out.println("¿desea mirar mas adelante?");
System.out.println("//////////////////////////////////");
}else
{
for (x=2; x<3; x++)
  {
  System.out.print ("Ingrese el alumno "+(x+1)+": ");
  alumno[x]= leer.readLine();
  System.out.print ("Ingrese la carrera que cursa: ");
carrera [x] = leer.readLine();
System.out.print ("Ingrese su N° de Control: ");
control [x] = Integer.parseInt(leer.readLine());
  }
}
//FINALIZA TERCER ALUMNO

//INICIA CUARTO ALUMNO

int cuartoalumno=0;
  System.out.println("[1] SI");
  System.out.println("[0] NO");
  System.out.println("Desea introducir otro alumno?: ");
  cuartoalumno=Integer.parseInt(leer.readLine());

  switch (cuartoalumno)
  {
  case 1:
 
  if (control[3]>0)
{
System.out.println("//////////////////////////////////");
System.out.println("La CUARTA casilla esta llena.");
System.out.println("¿desea mirar mas adelante?");
System.out.println("//////////////////////////////////");
}else
{
for (x=3; x<4; x++)
  {
  System.out.print ("Ingrese el alumno "+(x+1)+": ");
  alumno[x]= leer.readLine();
  System.out.print ("Ingrese la carrera que cursa: ");
carrera [x] = leer.readLine();
System.out.print ("Ingrese su N° de Control: ");
control [x] = Integer.parseInt(leer.readLine());
  }
}
//FINALIZA CUARTO ALUMNO

//INICIA QUINTO ALUMNO
int quintoalumno=0;
  System.out.println("[1] SI");
  System.out.println("[0] NO");
  System.out.println("Desea introducir otro alumno?: ");
  quintoalumno=Integer.parseInt(leer.readLine());
 
  switch (quintoalumno)
  {
  case 1:
 
  if (control[4]>0)
{
System.out.println("//////////////////////////////////");
System.out.println("La QUINTA casilla esta llena.");
System.out.println("¿desea mirar mas adelante?");
System.out.println("//////////////////////////////////");
}else
{
for (x=4; x<5; x++)
  {
  System.out.print ("Ingrese el alumno "+(x+1)+": ");
  alumno[x]= leer.readLine();
  System.out.print ("Ingrese la carrera que cursa: ");
carrera [x] = leer.readLine();
System.out.print ("Ingrese su N° de Control: ");
control [x] = Integer.parseInt(leer.readLine());
  }
}
//FINALIZA EL QUINTO ALUMNO

//INICIALIZA CUANDO TODO ESTA LLENO
int termino=0;
  System.out.println("///////////////////////////////////////////");
  System.out.println("¡TODO HA SIDO REGISTRADO EXITOSAMENTE!");
  System.out.println("///////////////////////////////////////////");
  System.out.println("[0] REGRESAR");
  System.out.println("INTRODUZCA LA OPCION CORRECTA: ");
  termino=Integer.parseInt(leer.readLine());
 
  switch (termino)
  {
  case 0:
      regresamenu0001=1;
      break;
  }
  //TERMINA  CUANDO TODO ESTA LLENO
 
 
  case 0:
  regresamenu0001=1;
  break;
  }
 
 
 
  case 0:
  regresamenu0001=1;
  break;
  }
     
      case 0:
      regresamenu0001=1;
      break;
  }
 
 
  case 0:
  regresamenu0001=1;
  break;
  }
                break;
                //INICIA CASE PARA REGRESAR
                case 0:
                regresamenu0001=1;
                break;
                //FINALIZA CASE PARA REGRESAR
                }
               
                //FINALIZA SWITCH CREADO PARA AGREGAR ALUMNOS O REGRESAR

    break;

   
    case 2:
    System.out.println("/////////////////////////");
System.out.println("ENTRO A OPCION CALIFICACIONES");
System.out.println("/////////////////////////");
String  st04=input.next();
    break;
   
    case 3:
    System.out.println("/////////////////////////");
System.out.println("ENTRO A OPCION ACTIVIDAD");
System.out.println("/////////////////////////");
String  st03=input.next();
    break;
   
    case 4:
    regresamenuprincipal=0;
    break;
}

}while (regresamenu0001==1);
//TERMINA MENU DE ALTAS

    break;
   
   
   
    case 2:
System.out.println("/////////////////////////");
System.out.println("ENTRO A OPCION BAJAS");
System.out.println("/////////////////////////");
String  st02=input.next();
    break;
   
    case 3:
System.out.println("/////////////////////////");
System.out.println("ENTRO A OPCION CAMBIOS");
System.out.println("/////////////////////////");
String  st01=input.next();
    break;
   
    case 4:
System.out.println("FIN DE EL PROGRAMA...");
String  st00=input.next();
    break;

}

//TERMINA MENU PRINCIPAL



}while (regresamenuprincipal==0);
}
}


Título: Re: REGRESAR A MENU ANTERIOR CASE EN JAVA
Publicado por: $Edu$ en 6 Abril 2012, 17:48 pm
Ordena mejor tus codigos, asi entenderas mejor que has escrito, tambien cuando pongas un codigo aca, ponele code=java a las etiquetas para que se vea coloreado el codigo y se entienda mejor..

Yo haria todo desde 0, planteandote todo en un papel con lapicera porque haces verificaciones de mas y tus do-while estan mal.


Tienes que hacer algo asi:

Código
  1. Do {
  2. BorrarPantalla;
  3. opc = 0;
  4.  
  5. --- Poner el Menu -- Con opcion 3- Salir
  6. opc = Leer.readline()
  7.  
  8. switch (opc)
  9. {
  10.  
  11. case 1:
  12.   Do {
  13.        BorrarPantalla;
  14.        opc2 = 0;
  15.  
  16.         --- Mostrar SubMenu1 --- con opcion 2- Salir
  17.  
  18.       } while(opc2 != 2)
  19.     break;
  20.  
  21. case 2:
  22.   Do {
  23.        BorrarPantalla;
  24.        opc3 = 0;
  25.  
  26.         --- Mostrar SubMenu1 --- con opcion 2- Salir
  27.  
  28.       } while(opc3 != 2)
  29.     break;
  30.    }
  31.  
  32. } while (opc != 3) // si no ingreso para salir pero no elijio ninguna opcion que vuelva a preguntar

Y asi vas metiendo do-while adentro segun quieras hacer mas SubMenus o algunos SubSubMenu xD

Fijate que Con lo que puse.. si no ingresa ninguna opcion, pregunta de nuevo pero no sale con un error, eso se lo pones vs si queres, aunque pienso yo que es mejor si no pones nada, ya que si no ingresa nada o ingresa algo mal, lo hace por error y la segunda vez lo hara bien.


Título: Re: REGRESAR A MENU ANTERIOR CASE EN JAVA
Publicado por: $krakatoa en 1 Julio 2013, 03:08 am
saludos edu

espero que alguien puede ayudarme, hago un menu similar a este, me estoy basando en lo comenta edu pero no entiendo la parte donde dice borrarpantalla; como la pongo en codigo que esta haciendo soy novato saludos y gracias!


Título: Re: REGRESAR A MENU ANTERIOR CASE EN JAVA
Publicado por: 1mpuls0 en 1 Julio 2013, 19:34 pm
En realidad no se puede borrar la pantalla xD
A menos que tu aplicación la ejecutes en consola del sistema operativo (tendrias que llamar a los comandos nativos del sistema para limpiar pantalla) o usando JNI pero no es lo que necesitas, en lugar de eso deja que se vaya mostrando todo el procedimiento anterior.


Título: Re: REGRESAR A MENU ANTERIOR CASE EN JAVA
Publicado por: ~ Yoya ~ en 3 Julio 2013, 16:37 pm
Y como va a regresar del menu 2 al 1 sino hiciste alguna forma para que regrese. Y me huele que el código que tienes esta basado en otro, POR ESA RAZON ESTAS ENTANCADO.