一个比较特殊的java.lang.NumberFormatException

strangefay 2009-08-23 12:32:41
39: }
40:
41: String t = "1.3.4".substring(0, 4).replace('.', (char)0);
42: out.println(Integer.valueOf(t));
43: // Make sure we are running at least Jdk 1.5.1


java.lang.NumberFormatException: For input string: "13" //主意这里
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:458)
java.lang.Integer.valueOf(Integer.java:554)
org.apache.jsp.install_jsp._jspService(install_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

难道说char(0)也是占据空间的? 从而导致转换失败? 各位高手 见教~~

...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdufs_iiip 2009-08-23
  • 打赏
  • 举报
回复
转换后t是为“1 3 ”;1和3的后面都是有空格的,当然是转换不了。
我不知道你最终想转换成怎样的结果,
如果是想得到13的结果可以用String t = "1.3.4".substring(0, 4).replace(".", "");
如果是想得到1030的结果可以用String t = "1.3.4".substring(0, 4).replace(".", "0")。
strangefay 2009-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
char 为 0 其是一个字符,虽然眼睛看不到这个字符的存在,但是实际上是存在的,
而且 char 0 也不是 0~9 之间的数字,因此会抛出该异常。

解决方法:采用字符串进行替换 replace(".", "");
[/Quote]

客气话不多说了 谢谢 看来经验还是很重要啊~~
老紫竹 2009-08-23
  • 打赏
  • 举报
回复
呵呵,果子一句中的!
  • 打赏
  • 举报
回复
char 为 0 其是一个字符,虽然眼睛看不到这个字符的存在,但是实际上是存在的,
而且 char 0 也不是 0~9 之间的数字,因此会抛出该异常。

解决方法:采用字符串进行替换 replace(".", "");

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧