如何在Java中将文本值解析为整数?
我尝试了以下两件事;
Integer.valueOf("22,959");
Integer.parseInt("22,959");
但是我得到了NumberFormatException。
只是添加,文本是动态的,但是我将以逗号格式为例。
答案 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)
此名称中提到的整数,只接受整数。仅表示没有点小数分隔符的数字。要删除小数点分隔符,您可以对字符串使用replace
或replaceAll
方法:
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,小数点用点(。)分隔,而不是逗号(,)