Foro de elhacker.net

Programación => Java => Mensaje iniciado por: CharlyScoTT en 30 Septiembre 2017, 18:25 pm



Título: si marca >4 le diga que no pueda y/o si marca <1 le diga lo mismo
Publicado por: CharlyScoTT en 30 Septiembre 2017, 18:25 pm
Quiero que mi usuario marque algunas de las opciones si marca  >4 le diga que no pueda y/o si marca <1 le diga lo mismo
 :P  :huh: ;D

Código
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class PrimerEjemplo {
  5.  
  6.  
  7.    public static void main(String[] args) {
  8.            Scanner sr= new Scanner(System.in);
  9.  
  10.            System.out.println("Las operaciones a realizar son");
  11.            System.out.println("1.-Suma");
  12.            System.out.println("2.-Resta");
  13.            System.out.println("3.-Multiplicacion");
  14.            System.out.println("4.-Division");
  15.            System.out.println("¿Que opcion deseas?");
  16.            int respuesta=sr.nextInt();
  17.  
  18.  
  19.    System.out.println("Introduce el valor de R");
  20.            int r=sr.nextInt();
  21.  
  22.            System.out.println("Introduce el valor de M");
  23.            int m=sr.nextInt();
  24.  
  25.            if (respuesta==1){
  26.            int suma2=r+m;//Realiza la operación
  27.            System.out.println("La suma es:"+suma2);}
  28.             if (respuesta==2){
  29.            int resta=r-m;//Realiza la operación
  30.            System.out.println("La resta es:"+resta);}
  31.             if (respuesta==3){
  32.            int mult=r*m;//Realiza la operacón
  33.            System.out.println("La multiplicación es:"+mult);}
  34.             if (respuesta==4){
  35.            double Div=r/m;//Realiza la operación
  36.            System.out.println("La división es:"+Div);}


· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos al problema
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: si marca >4 le diga que no pueda y/o si marca <1 le diga lo mismo
Publicado por: Serapis en 1 Octubre 2017, 11:24 am
Las entradas de datos del usuario siguen este esquema básico...

Código:
Funcion ActuarConUusuario // en realidad, es el bucle solo el pedazo de código que interesa, se envuelve en una función para que no parezca ...código perdido ...

    Hacer
        x = Pedirdato
        y = VerificarEntradaUser(x) //, A, Z, Mensaje)
    Repetir Mientras (y=FALSE)  ' o Hasta que (y=TRUE)

Fin Funcion

Y la verificación, sigue un esquema más o menos similar (hay que adaptarla siempre a las necesidades, aquí adaptada a la tuya), a esto:

Código:
Buleano = Funcion VerificarEntradaUser(dato, Min, Max, MensajeError)
    Si (Dato >= Min) y (Dato <= Max) luego
        Devolver TRUE
    Sino
        MostrarMensaje (MensajeError)
        Devolver FALSE
    Fin si
Fin funcion

Finalmente en tu rutina de verificar si está limitado al rango 1-4, la llamada sería más o menos:
Código:
    y = VerificarEntradaUser(x, 1, 4,"no puedes marcar el valor " + )

El mensaje de error tu sabrás cual es más razonable conforme a lo que el usuario esté haciendo.
Podrías tener contantes y un array con mensajes de error, con cada petición según donde estés marcas el índice del mensaje de error que se debería mostrar para ese caso concreto....
Código:
Enumeracion ConstantesMensajesErrorEntradaUser
    ERROR_ENTRADA_USER_SOLO_UNA_CASILLA = 0 // Debe activar solo una casilla a la vez
    ERROR_ENTRADA_USER_VALOR_FUERA_RANGO = 1 // El valor entrado está fuera dle rango permitido.
    ...
    ...
    ERROR_ENTRADA_USER_CARACTER_ILEGAL = 8 // La entrada contiene varacteres no permitidos (se esperaban números , o solo x letras, etc...).
Fin enumeracion

String ArrayErroresEntradaUser(0 a 8) // por ejemplo, tu sabrás cuantos mensajes de error serían precisos...
Entero ErrorActualEntradaUser // tipo ConstantesMensajesErrorEntradaUser

Funcion Inicializar
    ArrayErroresEntradaUser(ERROR_ENTRADA_USER_SOLO_UNA_CASILLA) = "Debe activar solo una casilla a la vez."
    ArrayErroresEntradaUser(ERROR_ENTRADA_USER_VALOR_FUERA_RANGO) = "El valor entrado está fuera dle rango permitido."
    ...
    ...
    ArrayErroresEntradaUser(ERROR_ENTRADA_USER_CARACTER_ILEGAL) = "La entrada contiene varacteres no permitidos (se esperaba solo números)."

    //Otras cosas que requieran ser inicializadas al comienzo del programa...
Fin funcion
   
Funcion BotonX_Click(parametros....)
    ErrorActualEntradaUser = ERROR_ENTRADA_USER_VALOR_FUERA_RANGO //en esta pieza de código se espera que el error que vaya a cometer el usuario sea (fuera de rango, si fueran posibles más errores, sería la función 'VerificarEntradaUser' quien deberiera chequear que error se comete y en base a ello, obtener el mensaje de error oportuno al caso.
    LlamarA ActuarConUsuario
Fin funcion

El resto son cambios, y se produce en la llamada al mensaje de error (que ahora se usa un índice en un array para obtener el mensaje...
Código:
Buleano = Funcion VerificarEntradaUser(dato, Min, Max) //se elimina el parametro mensajeError.
    Si (Dato >= Min) y (Dato <= Max) luego
        Devolver TRUE
    Sino
        MostrarMensaje (ArrayErroresEntradaUser(ErrorActualEntradaUser))
        Devolver FALSE
    Fin si
Fin funcion

Si los mensajes son muy variopintos y difíciles de 'predecir' según la situación, entonces es mejor que desde donde se llame se ingrese ya, el mensaje específico, que toque en caso de error...

Si lo repasas varias vece,s acabarás por encontrarle la lógica.


Título: Re: si marca >4 le diga que no pueda y/o si marca <1 le diga lo mismo
Publicado por: CharlyScoTT en 20 Octubre 2017, 23:55 pm
Gracias !! ;)