为了账号安全,请及时绑定邮箱和手机立即绑定

Java 从字符串解析为数字,但推断类型

Java 从字符串解析为数字,但推断类型

梵蒂冈之花 2022-09-07 16:14:08
我正在尝试编写一个将字符串转换为数字的泛型方法。我可以使用哪个 API 来完成此操作。private <T extends Number> T parseFromString(String str) {   // convert str to number}然后致电:   parseFromString<Double>("120.0");   parseFromString<Integer>("11");
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

无需使用泛型,我只使用:


private static Number parseFromString(String str) throws NumberFormatException {

    if (str.matches("\\d+")) {

        return Integer.valueOf(str);

    } else if (str.matches("[-+]?[0-9]*\\.?[0-9]+")) {

        return Double.valueOf(str);

    }

    throw new NumberFormatException("Number not correct");

}

输出


System.out.println(parseFromString("11"));    // 11

System.out.println(parseFromString("112.3")); // 112.3

System.out.println(parseFromString("some not correct strings")); // Number not correct

或者正如@shmosel在他的评论中提到的,你可以只使用:


private static Number parseFromString(String str) throws ParseException {

    return NumberFormat.getInstance().parse(str);

}

在此解决方案中,您可能会丢失精度,因此可能需要使用区域设置,如下所示:


private static Number parseFromString(String str) throws ParseException {

    return NumberFormat.getInstance(Locale.CANADA).parse(str);

}


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信