Почему строковые входы в виде двойников выводят этот ответ - PullRequest
2 голосов
/ 15 июня 2019

Я очень новичок, и мне просто любопытно узнать, почему этот код выводит 201.0 при вводе 2E2 в качестве значения double.

public static void main(String[] args) {
    double r = 2E2;
    try{
    }
    catch(InputMismatchException e) {
        r=-1.0;
    }
    finally{
        r++;
    }
    System.out.println(r);
}

выход: 201.0

Ответы [ 2 ]

3 голосов
/ 15 июня 2019

Вставляя букву E, вы говорите, что сила 2 * 10 ^ 2. Дополнительная единица прибывает из блока finally, который всегда выполняется, даже если выдается ошибка. Если бы вы поставили 2E3, он вывел бы 2001.0!

0 голосов
/ 15 июня 2019

2E2 в десятичной записи - 200. Ваш блок try catch не содержит никакого кода, поэтому он никогда не достигает блока исключений, и блок finally увеличивает значение 2E2, добавляя к нему 1.Итак, ответ 2E2 + 0X1 = 0x2E3 (201.0), что является правильным.Наконец, когда вы печатаете его, он отображается в десятичном формате как 201.0.

...