Ошибка при вводе float

224
14 июля 2018, 03:00

Мой код:

import  java.util.Scanner;
public class oClass {
    public static void main(String[] args) {
       Scanner fx = new Scanner(System.in);
       System.out.println("Введите свой земной вес");
       float Earth = fx.nextFloat();
       float Loon = (float) (Earth * 0.17);
       System.out.println("Ваш вес на луне составляет " + Loon + "кг. Приятного полёта!");
    }
}

Когда я ввожу целое число, то всё работает хорошо. Но когда я ввожу десятичное число(float), у меня появляется ошибка

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextFloat(Scanner.java:2345)
    at com.company.oClass.main(oClass.java:7)

Почему это происходит, ведь я указал тип переменной и тип вводимого числа float.

Answer 1

Либо используйте тот символ разделителя целой и дробной части, который принят в вашей стране (для России это запятая), либо явно указывайте локаль:

Scanner scanner = new Scanner(System.in).useLocale(Locale.ENGLISH);
READ ALSO
Что означает оператор стрелка -> в Kotlin? Эквивалент в Java

Что означает оператор стрелка -> в Kotlin? Эквивалент в Java

Всем привет! Подскажите плиз! Пытаюсь разобрать один паттерн, пример использования Android Architecture Components, написанный на Koltin'e и столкнулся с синтаксисом,...

198
Не читает русский язык

Не читает русский язык

Работаю с файлами, мой код:

306
БД ФИАС импорт xml в Postgres

БД ФИАС импорт xml в Postgres

Доброго времени суток

577
AES шифрование. QR-код

AES шифрование. QR-код

Есть задача: из зашифрованнх данных с помощью алгоритма шифрования (AES например) сгенерирован QR-кодНужно создать Android-приложение для считывания...

344