Decimal en java

Que tal camaradas tengo una inquiectud muy importante aunque soy nuevo en java me gustaria saber como poder resolverlo

estoy realizando este programita en java

*/

package javayacomar;

import java.util.Scanner;

/**
 *
 * @author xxx

*/
public class DeterminarMayorProductoDiferenciaDivision {

    static float suma, diferencia,producto,division,num1,num2;
    static Scanner teclado=new Scanner (System.in);
    public static void main (String... morfa){
        System.out.println("Favor ingrese el primer numero");
        num1=teclado.nextFloat();
        System.out.println("Favor ingrese el segundo numero");
        num2=teclado.nextFloat();
        if (num1>num2){
            suma=num1+num2;
            diferencia=num1-num2;
            System.out.println("La  suma es "+ suma+" teniendo como diferencia "+diferencia);
        } else {
            producto=num1*num2;
            division=num1/num2;
            System.out.println("El producto de los numero es "+ producto+" y su division es "+division);
        }  
}

    }

}
 

el error que me da en cuando ingreso un numero decimal como por ejemplo 1.5 el programa me explota y me sale

Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Scanner.java:840)
        at java.util.Scanner.next(Scanner.java:1461)
        at java.util.Scanner.nextFloat(Scanner.java:2319)
        at javayacomar.DeterminarMayorProductoDiferenciaDivision.main(D eterminarMayorProductoDiferenciaDivision.java:27)
Java Result: 1

 

Ahora cuando lo pongo con asi 1,5 me corre bien,osea con una coma, se que se puede resolver con un parser, per la verdad nunca lo he usado. me gustari ver un jemplito basico de como podria resolver este caso para poder poner los valores con punto

Gracias,

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Tiene que ver por el

Tiene que ver por el "Locale" que se utiliza para hacer regionalizaciones del código.

De alguna forma tu locale por default, usa uno donde los decimales se separan por , y no por .

Lo único que tienes que hacer es usar un Locale donde si aplique el . ( como en México pro ejemplo )

En la documentación, lee la parte Localized numbers

An instance of this class is capable of scanning numbers in the standard formats as well as in the formats of the scanner's locale

Entonces lo siguiente debería de funcionar ( usa <code> y </code> opara el código) :

static Scanner teclado=new Scanner (System.in);
teclado.useLocale( new Locale("es", "MX"));

Aunqeu quizá tengas problemas cuando escribas "1,5" :P

Imagen de ezamudio

float/double

Y si quieres cierta precisión, lee acerca de los floats y doubles... te recomiendo mejor usar BigDecimal.

Imagen de emorfa

Gracias mil

Gracias mejor de ahi se daña..................