Почему у меня есть inputMismatchException в источнике? - PullRequest
0 голосов
/ 18 сентября 2011

Почему у меня есть inputMismatchException? Когда входные данные являются только целыми числами, результат будет хорошим, но когда я использую двойные входные данные, компилятор генерирует исключение inputMismatchException.

public static void main(String[] args) {
    // TODO Auto-generated method stub
    // Help by Sahil Muthoo
    System.out.println("Enter the radius and length of a cylinder:");
    Scanner sc = new Scanner(System.in);
    Pattern newlineOrSpace = Pattern.compile(System.getProperty("line.separator") + "|\\s");
    sc.useDelimiter(newlineOrSpace);
    double radius=sc.nextDouble();
    double length=sc.nextDouble();
    double area= radius*radius*Math.PI;
    double volume=area*length;
    System.out.println("The area is " + area);
    System.out.println("The volume is " + volume);
}

Пример ввода: 3 5 будет хорошо.

Входные данные для примера: 3.3 5 будет выбрасывать inputMismatchException

Ответы [ 2 ]

2 голосов
/ 18 сентября 2011

вы пытались использовать вместо.? как 3,5 вместо 3,5? это решило это для меня.

1 голос
/ 18 сентября 2011

Вы, кажется, работаете не с той локалью.Если вы не укажете JVM явно, какую локаль использовать для интерпретации входных данных с плавающей запятой, она будет использовать локаль по умолчанию вашей системы (JVM).

Явно установите для локали формат США:

public static void main(String[] args) {
    Locale.setDefaultLocale(Locale.US);
    ...

Я воспроизвел проблему следующим образом:

  1. установить языковой стандарт по умолчанию на GERMANY (десятичный разделитель - запятая), ввод 3,5 работает, но 3.5 - нет.
  2. установить локаль по умолчанию на US (десятичный разделитель - точка), ввод 3.5 работает, но 3,5 - нет.

Поскольку это домашняя работа, вы должны вернуться к проф.попросить разъяснения по многоязычным требованиям: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...