1 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
無(wú)需使用泛型,我只使用:
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在他的評(píng)論中提到的,你可以只使用:
private static Number parseFromString(String str) throws ParseException {
return NumberFormat.getInstance().parse(str);
}
在此解決方案中,您可能會(huì)丟失精度,因此可能需要使用區(qū)域設(shè)置,如下所示:
private static Number parseFromString(String str) throws ParseException {
return NumberFormat.getInstance(Locale.CANADA).parse(str);
}
添加回答
舉報(bào)