Foro de elhacker.net

Programaciσn => Java => Mensaje iniciado por: jelsir en 20 Septiembre 2013, 05:43 am



Título: switch y case en que parte de mi codigo
Publicado por: jelsir en 20 Septiembre 2013, 05:43 am
hola buenas noches:

tengo el siguiente problemas estoy empezando a programar el siguiente codigo funciona perfectamente con el while ya se ejecuto como querria, ahora estoy tratando de que funciones con el switch y case pero no consigo que funcione que estoy haciendo mal ayuda por favor.. gracias aqui les dejo el codigo: ahh otro problema que presenta despues de ejecutar deberia regresar al menu principal pero no lo hace...nuevamente gracias

package udem;

import java.io.*;
public class Udem
{
 public static void main(String []args)throws IOException
 {
  int regresar=1,opc;
  BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("\n");
   
 
 
  switch(regresar)
  {
   
    case 1:System.out.print("\n\t 1.- DECIMAL     —> BINARIO");
    System.out.println("\n");
    case 2:System.out.print("\n\t 2.- DECIMAL     —> OCTAL");
    case 3:System.out.print("\n\t 3.- DECIMAL     —> HEXADECIMAL");
    System.out.print("\n\t");
    case 4:System.out.print("\n\t 4.- BINARIO     —> DECIMAL");
    case 5:System.out.print("\n\t 5.- BINARIO     —> OCTAL");
    case 6:System.out.print("\n\t 6.- BINARIO     —> HEXADECIMAL");
    System.out.print("\n\t");
    case 7:System.out.print("\n\t 7.- HEXADECIMAL —> BINARIO");
    case 8:System.out.print("\n\t 8.- HEXADECIMAL —> OCTAL");
    case 9:System.out.print("\n\t 9.- HEXADECIMAL —> DECIAMAL");
    System.out.print("\n\t ");
    case 10:System.out.print("\n\t 10.-OCTAL       —> BINARIO");
    case 11:System.out.print("\n\t 11.-OCTAL       —> DECIMAL");
    case 12:System.out.print("\n\t 12.-OCTAL       —> HEXADECIMAL");
    System.out.print("\n\t=========================================");
    System.out.print("\n\t");
    System.out.print("\nELIGE LA OPCION A CONVERTIR: ");
   opc=Double.valueOf(in.readLine().trim()).intValue();
    if(opc==1)
 
    {
    System.out.print("\nTU OPCION FUE 1= DECIMAL —> BINARIO");
    System.out.println("\n");
    System.out.println("\nIngrese el valor DECIMAL: ");
    String DecimalFormat = in.readLine();
    int i = Integer.parseInt(DecimalFormat);
    String bin = Integer.toBinaryString(i);
    System.out.println("\n");
    System.out.println("El valor en BINARIO es: " + bin);
    break;
   
    }
   
    {
     if(opc==2)
    {
       System.out.print("\nTU OPCION FUE 2= DECIMAL —> OCTAL");
       System.out.println("\n");
       System.out.println("\nIngrese el valor DECIMAL: ");
       String DecimalFormat = in.readLine();
       int i = Integer.parseInt(DecimalFormat);
       String oct = Integer.toOctalString(i);
       System.out.println("\n");
       System.out.println("El valor en Octal es: " + oct);
    break;
    }
    if(opc==3)
     {
       System.out.println("\nTU OPCION FUE 3= DECIMAL —> HEXADECIMAL");
       System.out.println("\n");
       System.out.println("\nIngrese el valor DECIMAL: ");
       String DecimalFormat = in.readLine();
       int i = Integer.parseInt(DecimalFormat);
       String hex = Integer.toHexString(i);
       System.out.println("\n");
       System.out.println("El valor en HEXADECIMAL ES: " + hex);
     break;
     }
     if(opc==4)
     {
       System.out.print("\nTU OPCION FUE 4= BINARIO —> DECIMAL");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO BINARIO : ");
       String Bidi = in.readLine();
       int i = Integer.parseInt(Bidi,2);
       String dec = Integer.toString(i);
       System.out.println("\n");
       System.out.println("El valor en DECIMAL es: " + dec);
      break;
     }
     if(opc==5)
     {
       System.out.print("\nTU OPCION FUE 5= BINARIO —> OCTAL");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO BINARIO : ");
       String Bidi = in.readLine();
       int i = Integer.parseInt(Bidi,2);
       String oct = Integer.toOctalString(i);
       System.out.println("\n");
       System.out.println("El valor en OCTAL es: " + oct);
      break;
     }
        if(opc==6)
     {
       System.out.print("\nTU OPCION FUE 6= BINARIO —> HEXADECIMAL");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO BINARIO : ");
       String Bidi = in.readLine();
       int i = Integer.parseInt(Bidi,2);
       String hex = Integer.toHexString(i);
       System.out.println("\n");
       System.out.println("El valor en HEXADECIMAL es: " + hex);
      break;
     }
     if(opc==7)
     {
       System.out.print("\nTU OPCION FUE 7= HEXADECIMAL —> BINARIO");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO HEXADECIMAL: ");
       String hex = in.readLine();
       int i = Integer.parseInt(hex,16);
       String bin = Integer.toBinaryString(i);
       System.out.println("\n");
       System.out.println("El valor en BINARIO es: " + bin);
      break;
     }
     if(opc==8)
     {
       System.out.print("\nTU OPCION FUE 8= HEXADECIMAL —> OCTAL");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO HEXADECIMAL: ");
       String hex = in.readLine();
       int i = Integer.parseInt(hex,16);
       String oct = Integer.toOctalString(i);
       System.out.println("\n");
       System.out.println("El valor en OCTAL es: " + oct);
      break;
     }
     if(opc==9)
     {
       System.out.print("\nTU OPCION FUE 9= HEXADECIMAL —> DECIMAL");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO HEXADECIMAL: ");
       String hex = in.readLine();
       int i = Integer.parseInt(hex,16);
       String dec = Integer.toString(i);
       System.out.println("\n");
       System.out.println("El valor en DECIMAL es: " + dec);
      break;
     }
     if(opc==10)
     {
       System.out.print("\nTU OPCION FUE 10= OCTAL —> BINARIO");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO OCTAL: ");
       String oct = in.readLine();
       int i = Integer.parseInt(oct,8);
       String bin = Integer.toBinaryString(i);
       System.out.println("\n");
       System.out.println("El valor en BINARIO es: " + bin);
      break;
     }
     if(opc==11)
     {
       System.out.print("\nTU OPCION FUE 11= OCTAL —> DECIMAL ");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO OCTAL: ");
       String oct = in.readLine();
       int i = Integer.parseInt(oct,8);
       String dec = Integer.toString(i);
       System.out.println("\n");
       System.out.println("El valor en DECIMAL es: " + dec);
      break;
     }
     if(opc==12)
     {
       System.out.print("\nTU OPCION FUE 12= OCTAL —> HEXADECIMAL");
       System.out.println("\n");
       System.out.print("\nINGRESA UN NUMERO OCTAL: ");
       String oct = in.readLine();
       int i = Integer.parseInt(oct,8);
       String hex = Integer.toHexString(i);
       System.out.println("\n");
       System.out.println("El valor en HEXADECIMAL es: " + hex);
      break;
      }
     }
    }
     System.out.print("\n");
     System.out.print("\nΏΏΏ REGRESAR A MENU PRINCIPAL ???   [1.-Si /2.No ]: ");
     regresar=Double.valueOf(in.readLine().trim()).intValue(); 
 }
 }



Título: Re: switch y case en que parte de mi codigo
Publicado por: Mitsu en 20 Septiembre 2013, 14:04 pm
Primero, para que regrese al menú principal tienes 2 opciones: Hacer el mismo switch en un método y cada vez que termine una conversión, llamar al método. Esto no te lo aconsejo por cuestión de praxis y memoria, estarías cargando variables innecesarias.

La segunda opción es hacerlo mediante un bucle con centinela. Esto es; que se repita todo el menú mientras que NO se ingrese el centinela, que puede ser por ejemplo -1. Es decir, que el menú se seguirá ejecutando, hasta que en vez de una opción valida, se ingrese -1. La condición del bucle cambia a False y termina el proceso.

Otro punto importante es que, en Java una estructura switch todo un proceso debe ir en su case correspondiente. En un switch, luego de cada sentencia en los cases, está la palabra break, esto quiere decir, que cuando haga una sentencia del case que coincide con el valor de la variable evaluada, el break hará que el switch se rompa y termine. Cuando el switch encuentra la sentencia break, el switch se romperá y prosiguirá el algoritmo. Tú al no poner las sentencias break en los case, estás haciendo que siempre se ejecute el último case.

El código dentro de los if, deben estar en su case correspondiente.