在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
解析该数字。您将区分区域设置的格式与硬编码解析混合在一起。非常正确,他得到异常是因为在数字之间添加了“,”非常正确,他得到异常是因为在数字之间添加了“,”