elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  No entiendo el porqué...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No entiendo el porqué...  (Leído 1,910 veces)
Droigor

Desconectado Desconectado

Mensajes: 8



Ver Perfil
No entiendo el porqué...
« 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.


En línea

Se bueno, ten un buen día.
Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: No entiendo el porqué...
« Respuesta #1 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.


« Última modificación: 13 Marzo 2014, 20:32 pm por Chuidiang » En línea

Droigor

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: No entiendo el porqué...
« Respuesta #2 en: 13 Marzo 2014, 20:42 pm »

¡Vaya!

Pues sí que es listo Scanner sí.

Gracias por la respuesta  y un saludo.
En línea

Se bueno, ten un buen día.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines