Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Droigor en 13 Marzo 2014, 18:42 pm



Título: No entiendo el porqué...
Publicado por: Droigor en 13 Marzo 2014, 18:42 pm
Saludos a tod@s.

Me pasa algo que no soy capaz de entender.

Código:
package javaya2.pkg1;

import java.util.Scanner;

/**
 * Hallar la superficie de un cuadrado conociendo el valor de un lado.
 * @author droigor
 */
public class Javaya21 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        //Declaraciones
        float lado;
        float superficie;
        Scanner sc = new Scanner(System.in);
       
        //Proceso
        System.out.println("Introduzca el lado del cuadrado:");
        lado = sc.nextFloat();
       
        //Resultado
        superficie = lado * lado;
        System.out.println("La superficie del cuadrado de lado "
                +lado+" es de "+superficie);
       
    }
   
}

Ejecuto el programa, introduzco cualquier número que no sea un entero y me pasa esto :

run:
Introduzca el lado del cuadrado:
2.0
Exception in thread "main" java.util.InputMismatchException
   at java.util.Scanner.throwFor(Scanner.java:909)
   at java.util.Scanner.next(Scanner.java:1530)
   at java.util.Scanner.nextFloat(Scanner.java:2388)
   at javaya2.pkg1.Javaya21.main(Javaya21.java:29)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Soy un melón o le pasa algo a mi IDE?

Gracias.


Título: Re: No entiendo el porqué...
Publicado por: Chuidiang en 13 Marzo 2014, 20:30 pm
Scanner es demasiado listo. Usa una coma decimal en vez de un punto.

Usa el punto como separador de miles, un 2.000 no te da error, porque lo considera como 2000

Puedes cambiar el comportamiento con sc.useLocale(....);

Se bueno.


Título: Re: No entiendo el porqué...
Publicado por: Droigor en 13 Marzo 2014, 20:42 pm
¡Vaya!

Pues sí que es listo Scanner sí.

Gracias por la respuesta  y un saludo.