A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈子豪 中级黑马   /  2013-3-15 20:49  /  1097 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈子豪 于 2013-3-15 22:17 编辑

public class StringBufferDemo{
   public static void main(String[] args) {
      // 方式1
      int x = 10;
      Integer i = new Integer(x);
      System.out.println("i:" + i);
      // 方式2
      //String s = "10";
       String s = "a";
      Integer ii = new Integer(s);
      System.out.println("ii:" + ii);
   }
}
运行结果如下Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.<init>(Integer.java:677)
    at test1_1.StringBufferDemo.main(StringBufferDemo.java:13)
我查了下异常显示如下 public Integer(String s) throwsNumberFormatException {
        this.value = parseInt(s, 10);
    },哪位大神能解释下?

点评

如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-15 22:09

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

4 个回复

倒序浏览
当函数参数无法转换为数字型时,该函数parseInt()会抛出异常,解决方法,抛出运行时异常或用try catch处理。

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
在使用构造方法Integer(String s)时,使用了与parseInt()相同的方式将该字符串转换为int值。因为不知道String中是否包含可解析的整数,所以会抛出NumberFormatException。

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
首先你这个类出现了“数字转换异常”。为什么呢?因为你定义的s是String变量,然后你直接加入Integer中。你应该先转换一下,然后打印出来。
字符串转换为数字的方法如:int aa = Integer.paresInt(s)。这样就不回报错了,希望能够解决你的问题。
代码如下:
  1. public class Main
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String aaString = "97";
  6.                 int a = Integer.parseInt(aaString);
  7.                 System.out.print(a);
  8.         }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

Integer(String s):是要求被转换的字符串是全部由数字字符组成的字符串.所以会出现这种情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马