为什么字符串输入为双精度输出此答案

时间:2019-06-15 05:41:30

标签: java try-catch try-catch-finally inputmismatchexception

我是个新手,我很好奇,为什么当输入2E2作为double的值时,为什么此代码会输出201.0。

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 个答案:

答案 0 :(得分:3)

通过输入E,您说的是2 * 10 ^ 2的幂。额外的1来自finally块,即使抛出错误,该块也总是执行。如果您要放置2E3,它将打印出2001.0!

答案 1 :(得分:0)

2E2(十进制表示法)是200。您的try catch块不包含任何代码,因此它永远不会到达异常块,并且finally块将2E2加1。因此,答案是2E2 + 0X1 = 0x2E3(201.0),这是正确的。最后,在打印时,它以十进制格式显示为201.0。