在Java中将String转换为long

时间:2012-04-19 10:34:02

标签: java

我无法将String s="45,333"转换为long或double数字。任何人都可以帮我解决这个问题..我添加了模型片段,当我尝试运行该代码时显示NumberFormatException ..

public static void main(String args[])
{
long a=85200;
NumberFormat numberFormat=NumberFormat.getNumberInstance();
String s=numberFormat.format(a);
Long l=Long.parseLong(s.toString());
System.out.println("The value:"+s);
System.out.println("The value of long:"+l);
}

4 个答案:

答案 0 :(得分:14)

考虑NumberFormat.parse()方法,而不是Long.parseLong()

Long.parseLong()期望String内部没有任何格式符号。

答案 1 :(得分:3)

混合NumberFormatLong.parseLong()不是一个好主意。

NumberFormat可以是区域设置感知的(在您的示例中它使用您的计算机的默认区域设置),或者您可以显式指定格式模式,而parseXXX()Number子类的方法读“普通”数字(可选减号+数字)。

如果您使用NumberFormat对其进行格式化,则应使用NumberFormat.parse()对其进行解析。但是,您不应该依赖于默认语言环境,而是尝试指定一个(或使用带有模式的DecimalFormat)。否则你可能会遇到一些令人讨厌且难以发现的错误。

如果您不关心格式,请考虑使用Long.toString()将长值转换为字符串,并使用Long.parseLong()将其转换回来。它更容易使用,线程安全(与NumberFormat不同)并且在任何地方都可以使用。

答案 2 :(得分:2)

正如所指出的,您可以像这样使用NumberFormat.parse()

public static void main(String args[]) {
    long a=85200;
    NumberFormat numberFormat=NumberFormat.getNumberInstance();
    String s=numberFormat.format(a);
    Long l;
    try {
        l = numberFormat.parse(s.toString()).longValue();
    } catch (ParseException ex) {
        l = 0L;
        // Handle exception
    }
    System.out.println("The value:"+s);
    System.out.println("The value of long:"+l);
}

答案 3 :(得分:-1)

long l = Long.valueOf(s);
System.out.println("The value of long:"+l);