【问题标题】:Why string inputs as doubles are outputting this answer为什么字符串输入作为双打输出这个答案
【发布时间】:2019-06-15 05:41:30
【问题描述】:

我很新,我只是想知道为什么当输入 2E2 作为双精度值时,这段代码会输出 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

【问题讨论】:

  • 你认为2E2是什么意思?
  • 因为2E2200.0。由于 try 块中没有异常,只有 finally 块运行,它会将其增加到 201.0

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


【解决方案1】:

输入 E 表示 2 * 10 ^ 2 幂。额外的 1 来自 finally 块,即使抛出错误也总是执行。如果你输入 2E3,它会打印出 2001.0!

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      相关资源
      最近更新 更多