Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将字符串转换为长字符串_Java - Fatal编程技术网

在java中将字符串转换为长字符串

在java中将字符串转换为长字符串,java,Java,我无法将字符串s=“45333”转换为long或double之类的数字。有人能帮我解决这个问题吗。。我已经添加了模型片段,当我尝试运行该代码时,它会显示NumberFormatException public static void main(String args[]) { long a=85200; NumberFormat numberFormat=NumberFormat.getNumberInstance(); String s=numberFormat.format(a); Long

我无法将
字符串s=“45333”
转换为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);
}

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


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

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


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

混合
NumberFormat
Long.parseLong()
不是一个好主意

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

如果您使用
NumberFormat
对其进行了格式化,则应使用
NumberFormat.parse()
将其重新解析。但是,您不应该依赖于默认的区域设置,请尝试指定一个区域设置(或者使用带有模式的
DecimalFormat
)。否则,您可能会遇到一些讨厌且难以检测的bug


如果您不关心格式,请考虑使用<代码> long .toString()<代码>将长值转换为String和<代码> long .PARSELUN()/<代码>,以将其转换回。它更易于使用,线程安全(不同于

NumberFormat
),并且在任何地方都可以使用。

混合
NumberFormat
Long.parseLong()
不是一个好主意

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

如果您使用
NumberFormat
对其进行了格式化,则应使用
NumberFormat.parse()
将其重新解析。但是,您不应该依赖于默认的区域设置,请尝试指定一个区域设置(或者使用带有模式的
DecimalFormat
)。否则,您可能会遇到一些讨厌且难以检测的bug


如果您不关心格式,请考虑使用<代码> long .toString()<代码>将长值转换为String和<代码> long .PARSELUN()/<代码>,以将其转换回。它更易于使用,线程安全(不同于

NumberFormat
),并且在任何地方都可以使用。

如前所述,您可以像这样使用
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);
}

正如所指出的,您可以像这样使用
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);
}

s的值是多少?好的,parseLong需要一个没有数千个分隔符的数字。它引发了什么异常?字符串s=numberFormat.format(a);长a=85200;使用相同的
NumberFormat
解析该数字。您将区分区域设置的格式与硬编码的解析混合在一起。s的值是多少?好的,parseLong需要一个没有数千个分隔符的数字。它引发了什么异常?字符串s=numberFormat.format(a);长a=85200;使用相同的
NumberFormat
解析该数字。您将区分区域设置的格式与硬编码解析混合在一起。非常正确,他得到异常是因为在数字之间添加了“,”非常正确,他得到异常是因为在数字之间添加了“,”