Foros del Web » Programación para mayores de 30 ;) » Java »

¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...?

Estas en el tema de ¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...? en el foro de Java en Foros del Web. Hola a todos, estoy acostumbrado a trabajar con Fortran, y ahora he emigrado algùn tiempo a Java. Se me ha presentado un problema, he desarrollado ...
  #1 (permalink)  
Antiguo 21/04/2010, 03:06
 
Fecha de Ingreso: noviembre-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...?

Hola a todos, estoy acostumbrado a trabajar con Fortran, y ahora he emigrado algùn tiempo a Java. Se me ha presentado un problema, he desarrollado una pequeña aplicación en la que utilizo la instrucción switch para la toma de decisiones. Ver la siguiente aplicación:
------------------------------------------------------------------------------------
// Paquetes Java
import javax.swing.*;
import java.text.DecimalFormat; // Clase para dar formato a los números.
public class ejemplo08 {
public static void main(String[] args) {
String entrada; // Entrada del usuario.
String datos;
// Formato de los números en coma flotantes.
DecimalFormat digitos = new DecimalFormat("0.000"); /* Resultados se
* presentarán con
* tres decimales. */
// Declaración de variables a ser utilizadas.
int opcion;
double intensidad, voltaje, resistencia;
// Obtener la opción del usuario.
entrada = JOptionPane.showInputDialog("Este programa muestra el uso \n" +
"de la sentencia de instrucción múltiple \"switch\" \n\n" +
"1. Voltaje. \n" +
"2. Intensidad de corriente. \n" +
"3. Resistencia. \n\n" +
"Su opció es: ");
opcion = Integer.parseInt(entrada); // Convierte entrada en int.
// Toma de decisiones.
switch(opcion){
case 1: // Cálculo del voltaje.
datos = JOptionPane.showInputDialog("La intensidad en amperios es: ");
intensidad = Double.parseDouble(datos);
datos = JOptionPane.showInputDialog("La resistencia en ohmios es: ");
resistencia = Double.parseDouble(datos);
// Calculo del voltaje.
voltaje = intensidad * resistencia;
// muestra resultado del cálculo del voltaje.
JOptionPane.showMessageDialog(null, "El voltaje es: "
+digitos.format(voltaje), "Resultado",
JOptionPane.INFORMATION_MESSAGE);
break;
case 2: // Cálculo de la intensidad.
datos = JOptionPane.showInputDialog("El voltaje en voltios es: ");
voltaje = Double.parseDouble(datos);
datos = JOptionPane.showInputDialog("La resistencia en ohmios es: ");
resistencia = Double.parseDouble(datos);
// Calculo de la intensidad.
intensidad = voltaje/resistencia;
// muestra resultado del cálculo de la intensidad de corriente.
JOptionPane.showMessageDialog(null, "La intensidad es: "
+digitos.format(intensidad), "Resultado",
JOptionPane.INFORMATION_MESSAGE);
break;
case 3: // Cálculo de la resistencia.
datos = JOptionPane.showInputDialog("El voltaje en voltios es: ");
voltaje = Double.parseDouble(datos);
datos = JOptionPane.showInputDialog("La intensidad en amperios es: ");
intensidad = Double.parseDouble(datos);
// Calculo del voltaje.
resistencia = voltaje/intensidad;
// muestra resultado del cálculo de la intensidad de corriente.
JOptionPane.showMessageDialog(null, "La intensidad es: "
+digitos.format(intensidad), "Resultado",
JOptionPane.INFORMATION_MESSAGE);
break;
default: // Muestra mensaje en caso de presentarse un opción inválida.
JOptionPane.showMessageDialog(null, "Se ha escogido una opción \n" +
"inválida", "Resultado", JOptionPane.WARNING_MESSAGE);
} // Cierre de la sentencia switch.
} // Cierre del método main
} // Cierre de la clase ejemplo08
--------------------------------------------------------------------------------------------
La aplicación es ejecutada perfectamente en netbeans 6.5 a 6.8. Mi problema consiste en lo siguiente: En caso tal el usuario por una opción inválida, será ejecutada todas las instrucciones después de "default". ¿Cómo o puedo hacer para (sin recurrir a la utilización del concepto de métodos), en caso tal se ejecute esta instrucción, la aplicación vuelva a formular (presentar) las opciones permitidas nuevamente?, esto es, vuelva a presentarse nuevamente el menú.
Les agradezco de antemano la ayuda brindada.[/B]Saludos a todos
  #2 (permalink)  
Antiguo 21/04/2010, 07:20
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: ¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...?

creo que deberias colocar un ejemplo mas sencillo pues todo ese codigo no es tan legible asi podremos ayudarte mejor.

slaudos
  #3 (permalink)  
Antiguo 21/04/2010, 15:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 16 años
Puntos: 4
Respuesta: ¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...?

Si, la verdad que muy legible no es. Si te entendi bien, quieres que este continuamente preguntando hasta que pulse una opcion valida??
Prueba a encerrar lo que quieras que se repita en un bucle while. Algo asi como

boolean opcionValida = false;
while(!opcionValida) {
// lo que quieras que se repita
}

Si es una opcion valida, ademas de hacer lo que tenga que hacer, cambia opcionValida a true.

Espero que fuera eso.

Un saludo.
  #4 (permalink)  
Antiguo 21/04/2010, 16:24
 
Fecha de Ingreso: abril-2010
Mensajes: 16
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...?

aca te va un ejemplo de menu

int Op=0;

while(Op!=5)
{
Op=(pides la opcion desde donde quieras, Teclado, Control, etc);
switch(Op)
{
case 1:
//Instrucciones para caso 1
break;
case 2:
//Instrucciones para caso 2
break;
case 3:
//Instrucciones para caso 3
break;
case 4:
//Instrucciones para caso 4
break;
case 5:
//SALIR
break;
case default:
//opcion no valida
break;
}
}


esta cosa va a jalar hasta q la Opcion (int Op) sea exclusivamente 5.

Saludos
  #5 (permalink)  
Antiguo 25/04/2010, 09:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Respuesta: ¿Cómo puedo trabajar con la instrucción switch de manera repetitiva...?

Muchas gracias por sus valiosas sugerencias, las aplicaré a ver que me da.

Salu2

Etiquetas: repetitiva, switch, trabajo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:00.