Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: SergioCaliber en 17 Marzo 2016, 18:28 PM

Título: Duda Examen Programaciin Urgente
Publicado por: SergioCaliber en 17 Marzo 2016, 18:28 PM
Hola buenas, estoy en un examen de programacion y me piden que haga una excepcion para controlar que el valor introducido en un double sea siempre un numero y no una letra o caracter extraño, no se como hacer eso, podriais echarme un cable?

System.out.println("Introduce el precio del juego: ");
        double n = teclado.nextDouble();
        if(
        {
           
        }
Título: Re: Duda Examen Programaciin Urgente
Publicado por: Orubatosu en 17 Marzo 2016, 23:11 PM
Depende del lenguaje, C o C++

Una solución usada a menudo es tomar el valor de entrada como una cadena de texto y recorrer la cadena mirando que todos los caracteres sean numeros, y no otra cosa y luego devolver el número correcto.

Una de tantas eso si
Título: Re: Duda Examen Programaciin Urgente
Publicado por: tincopasan en 18 Marzo 2016, 07:15 AM
normalmente las excepciones se utilizan para controlar o saltar(evitar) un error inesperado o por diferencias de datos, para ello se usa try y catch, hay cientos de páginas con estos y microsoft  por supuesto también lo tiene: https://msdn.microsoft.com/es-AR/library/ms173160.aspx, para algo tan simple deberías aprender a usar una fántastica herramienta: google
Título: Re: Duda Examen Programaciin Urgente
Publicado por: Lekim en 18 Marzo 2016, 13:57 PM
Hola

Hola para saber si una variables es una letra o un número usa Char.GetNumericValue.

Char.GetNumericValue Method (Char) (https://msdn.microsoft.com/en-us/library/aa311572(v=vs.71).aspx)


Método:
Char.GetNumericValue("25")   ---> Devuelve 1
Char.GetNumericValue("LA")  ----> Devuelve -1


También puedes usar:
Char.IsDigit (https://msdn.microsoft.com/es-es/library/7f0ddtxh(v=vs.110).aspx)
Char.IsDigit()  -> ¿Es un dígito? ---> Devuelve True/False

Char.IsNumber (https://msdn.microsoft.com/es-es/library/system.char.isnumber(v=vs.110).aspx)
Char.IsNumber() ¿Es un número?  ---> Devuelve True/False

Char.IsLetter (https://msdn.microsoft.com/es-es/library/yyxz6h5w(v=vs.110).aspx)
Char.IsLetter() -> ¿Es una letra? ---> Devuelve True/False


Ayer estuve conectado. Lástima no vi tu pregunta.
Título: Re: Duda Examen Programaciin Urgente
Publicado por: engel lex en 18 Marzo 2016, 14:05 PM
ese momento incomodo que estás en un examen de programación y decides preguntar en un foro algo urgente XD

probablemente para el momento que Orubatosu respondió ya SergioCaliber estaba en su casa y con 0 de nota XD
Título: Re: Duda Examen Programaciin Urgente
Publicado por: HdM en 18 Marzo 2016, 14:28 PM
CitarSergioCaliber estaba en su casa y con 0 de nota XD

Me da que más de uno de los que respondieron aquí, obtuvieron misma nota...
Título: Re: Duda Examen Programaciin Urgente
Publicado por: Eleкtro en 19 Marzo 2016, 19:56 PM
Ojo, que "hacer una excepción" se puede interpretar de varias maneras, como crear la excepción literálmente hablando heredando la clase base, o simplemente controlar posibles excepciones en un bloque try/catch...

De todas formas, ya de nada sirve explicar, y menos cuando tu pregunta es sobre Java, que nada tuvo que ver con .Net ...Ay! esos despistes catastróficos en mitad del examen, jeje.

Saludos
Título: Re: Duda Examen Programaciin Urgente
Publicado por: zanskmp en 23 Marzo 2016, 18:36 PM
En el código que indicas falta inicializar teclado, que entiendo puede ser un Scanner.
Una opción es controlar la excepción que da al introducir otro caracter que no sea double, en este caso esa excepción es: "InputMismatchException", para capturar esa excepción y hacer "algo" con el código cuando se de, tenemos que usar un try & catch como te han indicado, aquí te paso un ejemplo de lo que creo querías hacer:

Código (java) [Seleccionar]

Scanner teclado = new Scanner(System.in);
        try{
        System.out.println("Introduce el precio del juego: ");       
        double n = teclado.nextDouble();
        } catch (InputMismatchException ex) {
            System.out.println("No ha introducido un double Correcto");
        }


Ya dependiendo del objetivo podrías meter la petición del precio dentro de un bloque do while para que volviese a pedirle hasta que diese un valor double valido.