Java将文本解析为整数

时间:2014-09-24 07:59:26

标签: java numberformatexception

如何在Java中将文本值解析为整数?

我尝试了以下两件事;

Integer.valueOf("22,959");
Integer.parseInt("22,959");

但是我得到了NumberFormatException。

只是添加,文本是动态的,但是我将以逗号格式为例。

9 个答案:

答案 0 :(得分:2)

使用NumberFormat

    NumberFormat format = NumberFormat.getInstance();
    format.parse(num).intValue();

此默认实例将根据您的默认语言环境。 您可以根据Locale by

获取实例
    NumberFormat format = NumberFormat.getInstance(Locale.UK);

答案 1 :(得分:1)

这两个选项都是正确的。 valueOf会返回new Integer()个对象,而parseInt会返回原始int

但是,问题在于逗号,而不是方法本身。所以只需做一个

String value = "22,959";
value.replace(",", "");
Integer.valueOf(value);
Integer.parseInt(value);

答案 2 :(得分:0)

此名称中提到的整数,只接受整数。仅表示没有点小数分隔符的数字。要删除小数点分隔符,您可以对字符串使用replacereplaceAll方法:

Integer.parseInt("22,959".replaceAll(",",""));

答案 3 :(得分:0)

您正在尝试解析浮点数,而不是整数。整数不应包含任何小数分隔符。应该看起来像Integer.parseInt(“22”); 对于你的情况应该是这样的:float f = Float.parseFloat(“22,959”);

答案 4 :(得分:0)

您需要先删除逗号:

Integer.valueOf("22,959".replaceAll(",", ""));

答案 5 :(得分:0)

如果您有包含分隔符的数据,则可以将NumberFormat与区域设置

一起使用

NumberFormat.getNumberInstance(Locale.US).parse("22,959")

答案 6 :(得分:0)

整数不能有小数位。请改用Double。此外,你必须使用。作为逗号的替代品。以下作品:

Double.valueOf("22.959");
Double.parseDouble("22.959");

答案 7 :(得分:0)

我建议你用

删除逗号
Integer.parseInt("22,959".replaceAll(",", ""));

这假设您绝对不必处理欧洲语言环境,例如葡萄牙语,它们使用十进制表示数字分隔,使用逗号表示分数。

如果你想处理其他语言环境,你需要使用Numberformat来解析字符串:

要格式化当前区域设置的数字,请使用以下工厂类方法之一:

myString = NumberFormat.getInstance().format(myNumber);

要为其他区域设置格式化数字,请在对getInstance的调用中指定它。

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);

然后你就是:

myNumber = nf.parse(myString);

答案 8 :(得分:0)

我同意@primitivwurzel,Integer不能有小数。使用Double.parseDouble()/ Double.valueOf()代替Integer.parseInt()/ Integer.valueOf()

plus,小数点用点(。)分隔,而不是逗号(,)