java - 将带有前导特殊字符的字符串转换为双精度?
问题描述
我正处于 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 语句(如果它们在此处完全适用)。
提前致谢!
解决方案
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);
}
推荐阅读
- javascript - 控制器返回空值
- docker - Windows 上的 Dockerfile 复制超时问题
- python - 如何从 pvLIB 中的 GHI 数据计算 DNI 和 DHI?
- django - 如何在 django 的模型中定义日期格式?
- android - 从纬度和经度坐标创建 GregorianCalendar?
- azure - Azure 门户:如何查找我的 Azure Web 应用程序今天的访问者数量?
- c++ - 在排序向量上替换 std::find_if 和 std::bind2nd
- php - PHP循环通过Soap响应
- android - 如何在底部导航栏
- sql - XQuery [value()]:需要字符串文字