Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка java.util.InputMismatchException в коде java

vlqb200 Профи (644), на голосовании 7 лет назад
Вот код:

package com.company;

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scanA = new Scanner(System.in);
BigDecimal a = scanA.nextBigDecimal();
Scanner scanB = new Scanner(System.in);
BigDecimal b = scanA.nextBigDecimal();
Scanner scanC = new Scanner(System.in);
BigDecimal c = scanA.nextBigDecimal();

BigDecimal dva = new BigDecimal(2);

if (a.equals(0)) {
a = (c.subtract(b).subtract(b));
}
if (b.equals(0)) {
b = (c.subtract(a).subtract(a));
}
if (c.equals(0)) {
c = (a.add(b)).multiply(dva) ;
}
}
}

Ввёл: 0.1

Ошибка:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:860)
at java.base/java.util.Scanner.next(Scanner.java:1497)
at java.base/java.util.Scanner.nextBigDecimal(Scanner.java:2645)
at com.company.Main.main(Main.java:10)

Process finished with exit code 1

Что делать, в чём ошибка?
Голосование за лучший ответ
李西青 Просветленный (42581) 7 лет назад
Scanner использует информацию о локали для получения разделителя десятичной дроби. Локаль у тебя русская, значит разделитель запятая, а не точка.
vlqb200Профи (644) 7 лет назад
Спасибо, пока ты можешь ответить, маленький вопрос, как правильно писать сравнение переменной a и нуля?

if (a.compareTo(0)) {
}
не работает.
李西青 Просветленный (42581) используй BigDecimal.ZERO вместо 0
Похожие вопросы