首页 > 解决方案 > 将带有前导特殊字符的字符串转换为双精度?

问题描述

我正处于 Java 之旅的开始阶段,遇到了一个小问题,我很难弄清楚。

// Buffered Reader - Cost Per Employee

    BufferedReader in3 = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Cost per employee?");
    CostPerEmployee = in3.readLine();
    CostPerEmployeeD = Double.parseDouble(CostPerEmployee);
    System.out.println("Each employee costs $" + CostPerEmployeeD +".");

我希望能够将字符串输入转换为双精度,即使它包含前导“$”字符。我目前遇到了 NumberFormatException。

不确定如何使用 try、catch 和 finally 语句(如果它们在此处完全适用)。

提前致谢!

标签: java

解决方案


public static double convertToDouble(String str) {
    if (str == null)
        return Double.NaN;

    str = str.trim();
    str = str.startsWith("$") ? str.substring(1) : str;

    return str.isEmpty() ? Double.NaN : Double.parseDouble(str);
}

推荐阅读