No entiendo el porqué...

Iniciado por Droigor, 13 Marzo 2014, 18:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Droigor

Saludos a tod@s.

Me pasa algo que no soy capaz de entender.

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.
Se bueno, ten un buen día.

Chuidiang

#1
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.

Droigor

¡Vaya!

Pues sí que es listo Scanner sí.

Gracias por la respuesta  y un saludo.
Se bueno, ten un buen día.