黑马程序员技术交流社区

标题: 为什么报错呢? [打印本页]

作者: 李深山    时间: 2012-3-20 00:23
标题: 为什么报错呢?
System.out.println(Long.valueOf("a"));
Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
明明是可以的,以下是API说明,
public static Long valueOf(String s)
                    throws NumberFormatException返回保持指定 String 的值的 Long 对象。该参数被解释为表示一个有符号的十进制 long,该值与用该参数作为参数的 parseLong(java.lang.String) 方法得到的值非常相似。结果是表示由字符串指定的整数值的 Long 对象。
作者: 魏群    时间: 2012-3-20 00:42
s - 要解析的字符串,必须要是转换的数字的字符串形式。
作者: 张一凡    时间: 2012-3-20 00:43
有些字符串无法直接转成整型。
作者: a504079589    时间: 2012-3-20 00:50
这是数值格式转换异常, 只有数值型的字符串才能转换成整形数据, 比如"34"可以转换成相应的整数,,但是"a"这样是不行的啊
作者: 黄秋    时间: 2012-3-20 01:08
API最后那句才是关键呀:
抛出:
NumberFormatException - 如果不能将字符串解析为 long。

你现在的"a" 就是--- “不能将字符串解析为 long”。
作者: 丁佼    时间: 2012-3-20 01:59
这个和char的打印不同,char的数值转换打印时,是将字符的ASCII码打印出来,
这里的valueOf只能将一个数字形式存在的字符串转换成数字。也就是只能转换“123346567”这样的,
对于含有数字以外的字符,比如“abc”、“123234bcd”无法转换。

另附:
NumberFormatException (API文档的的解释是:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。 )


作者: 陈从宾    时间: 2012-3-20 06:46
Long valueOf(String s)  中的参数只能是由数字组成的字符串,不可以包含字母或其他字符的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2